Schema support

By defining  a schema for object types we can ensure values are properly coerced.  We can also specify indexing options there and eliminate the OBJIDX command (or repurpose it for managing and/or querying indices)

Basic functionality is done.  Test coverage is currently minimal, some cases that need testing:

- [x] OBJDEL emits idx:delete 
- [x] OBJSET emits idx:add when adding indexed fields
- [x] OBJSET emits idx:update when updating indexed fields
- [x] OBJSET encodes arrays, objects and booleans correctly
- [x] OBJGET decodes arrays, objects and booleans correctly