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