handlers: explicitly register handlers

Replace the metaclasses with explicit calls to handlers.register().
This is needed to support Python 3.

The built-in handlers were moved into jsonpickle.handlers to signify
that it's safe for others to use them.

Signed-off-by: David Aguilar <davvid@gmail.com>
jsonpickle: Python 3 support

Closes: #50
Signed-off-by: David Aguilar <davvid@gmail.com>
tests: add unit test for struct_time

The Python3 support required use of SimpleReduceHandler to
serialize struct_time.  Add a unit test to document the expected
behavior.

Signed-off-by: David Aguilar <davvid@gmail.com>
tests: add a unit test to ensure we can pickle builtin exceptions

Signed-off-by: David Aguilar <davvid@gmail.com>
pickler: factor out `rename_module()`

Signed-off-by: David Aguilar <davvid@gmail.com>
tests: eliminate all the extra classes in util_tests

Signed-off-by: David Aguilar <davvid@gmail.com>
util: simplify and fix is_function() for python 3

Simplify how we detect functions and add unit tests for instance methods
and builtin functions.

Signed-off-by: David Aguilar <davvid@gmail.com>
util: simplify how we handle translated module names

Centralize the code that is responsible for mapping module names
between python 2 and 3.  Map all builtins to the __builtin__
"canonical" name.  We translate this back to the effective
module name when importing, which allows for data compatibility
between Python 2 and 3.

Signed-off-by: David Aguilar <davvid@gmail.com>