ENH: json default_handler param
This adds a `default_handler` param to `to_json`, which if passed must be a callable which takes one argument (the object to convert) and returns a serialisable object. The `default_handler` will only be used if an object cannot otherwise be serialised.

Note right now the JSON serialiser has direct handling for:
- Python basic types `bool`, `int`, `long`, `float`.
- Python containers `dict`, `list`, `tuple` and `set`.
- Python byte and unicode strings.
- Python decimal.
- Python `datetime` and `date`.
- Python `None`.
- Numpy arrays.
- Numpy scalars 
- `NaN` and `NaT`
- Pandas `Index`, `Series`, `DataFrame` and `Timestamp`
- any subclasses of the above.

If an object is not recognised the fallback behaviour with this PR would be:
1. if a `toDict` method is defined by the unrecognised object that 
   will be called and its returned `dict` will be JSON serialised.
2. if a `default_handler` has been passed to `to_json` that will
   be called to convert the object.
3. otherwise an attempt is made to convert the object to a `dict` by
   iterating over its attributes. 

didn't this have an original issue? (or was that on the time serializatino?)

if not, just reference this issue in the release notes

passed on windows?
 thanks.....(I updated the release notes)...and confirmed windows...
