Support for set_pointer and indexing arbitrary objects via __getitem__/_setitem__

This adds support to modify documents based on jsonpointers as well as support for any object whose class supports the necessary methods __getitem__ (for resolving pointers to get data), and __setitem__ (for the set_pointer operation).  

See the tests for an example.  

I considered wrapping the support for non-dict/list types via __getitem__ with a boolean "check_getitem", but in the end I figured it was unnecessary complexity.