test json_clean on integer subclasses
re-cast int/float subclasses to int/float in json_clean

Protects against custom `__str__` in int subclasses (e.g. enums).

Works around a [bug in the stdlib](http://bugs.python.org/issue12657).

closes #4598
Merge pull request #4599 from minrk/json_clean_enum

re-cast int/float subclasses to int/float in json_clean