'Update this milestone.
All parameters are optional, but it makes no sense to omit all of them
at once.
:param str title: (optional), new title of the milestone
:param str state: (optional), (\'open\', \'closed\')
:param str description: (optional)
:param str due_on: (optional), ISO 8601 time format:
YYYY-MM-DDTHH:MM:SSZ
:returns: bool'

@requires_auth
def update(self, title=None, state=None, description=None, due_on=None):

    data = {u'title': title, u'state': state, u'description': description, u'due_on': due_on}
    self._remove_none(data)
    json = None
    if data:
        json = self._json(self._patch(self._api, data=dumps(data)), 200)
    if json:
        self._update_attributes(json)
        return True
    return False
