Allow use of custom json handler to encode PUT request data

Python's json module can't encode some objects in its default implementation, such as datetime objects. This change allows the user to supply their own custom handler for these cases.
Hey @eddiejessup sorry for just replying, I just noticed this Pull Request.  Hopefully we can help get this merged in.

Nevertheless, since we'd be changing the API, can you also write some documentation on the README about how to use `handler`?

Additionally, shouldn't this be done for the `POST` methods, as well as for the Events and Graph APIs?

Thanks<
Matt