Simplify pickling logic by using __reduce__ instead of copy_reg

The pickles produced this way are identical to the old ones.

One reason for this is that [mongopersist](https://pypi.python.org/pypi/mongopersist) currently doesn't implement the full pickle semantics and doesn't pay attention to the reduction function registered with the copy_reg module, but it can handle `__reduce__` just fine.