Rewrite test_encoding to call the top-level API rather than something deeper down.

This way, I can refactor the JSON encoding stuff without changing the tests.

Change 12.2 to 12.25 in the test data so it can be exactly represented in IEEE floating point. Otherwise, it comes out as 12.19999999 in py26, and I'd have to put more logic in the tests.
Make JSON encoder extension point clear, and call super() properly from decoder. Remove from_python(). Fix #42, #44.

We move JsonEncoder out to the module level and transplant the guts of from_python into JsonEncoder.default(). This makes it possible to call super() from the decoder, which would be very awkward from from_python().

The way to make the decoder aware of new types is now to subclass our JsonEncoder and stick your new class into an ElasticSearch object's json_encoder attr.

We take advantage of the new design to call super() from the decoder, which leads us raise a TypeError on unexpected input, as is usual with the json module, rather than a ValueError or other error.