Indexing clean-up

Change index syntax to an array of objects:

index: [
    { attribute: 'foo', type: 'hash' },
    { attribute: 'bar': type: 'static' }
    { attribute: 'baz', type: 'range', order: 'desc' },
    { attribute: 'quux', type: 'proj' }
]

This eliminates the separate hash / range / order members.

Also:
- Clean up schema validation & internal schema info extraction
- Only keep internal schema in memory
- Eliminate this.indexAttrMap, which would only work until the next restart.
  This information is now fully covered by the regular schema info.
- Break out the index update logic in preparation for making it async
- Switch to bluebird for Promise emulation
- Add an 'int' alias that uses varints internally
- Version the schema structure

TODO:
- Re-activate index updates & cross-checking for highly consistent index reads
- Create more tests for index updates & weakly / strongly consistent reads