Complex object support

These commits add the initial infrastructure for handling the case where the JSON pointer matches an array or object.  A lot more functionality can be built on top of this in the future.

In addition to the commit I had you preview the other day, this adds 2 new reducers that work when objects are returned.  I've been using these successfully over the weekend to do some basic schema discovery type operations.