implement support for secondary index reads
Making Secondary indexes compatible with new algorithm
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
Test clean-up pass

- Move most queries and schemas inline to avoid unnecessary indirections when
  looking at failing tests. This also avoids some repetition in comments etc.
- Add FIXMEs for switching to the REST interface
- Moved unused / example schemas & queries to a separate file
Path cleanup

- Remove old rashomon code
- Move all tests into test/, code into lib/
- Fix JSHint for tests
- Remove old .gitignore
Index update refactoring

This patch basically reimplements most of the secondary index update logic.
The new _rebuildIndexes method supports rebuilding entire indexes. It also
uses the eachRow method provided by the cassandra driver for streaming
rebuilds without buffering.

Additionally, this patch moves secondary index update and general database
utility methods into separate modules.
Update dependencies

- Switch to release version of cassandra-driver
- Use our fork of node-uuid for high-resolution timestamps & v1time method
Some more code restructuring

This is mostly fairly harmless sorting of methods into groups of related
functionality. For example, all CQL query building is now in a section of
dbutils.
Implement fast index reads without data table check

- Fast, eventually consistent index-only queries
    - This will be the default mode. We'll support highly consistent reads
      with cross-check against data later (much of the code is already there).
    - We limit ourselves to queries on the index only so far. We might add the
      ability to select data that's not directly projected into the data table
      later (at the cost of one request per row request against the data
      table).
- Use _del field to exclude values that don't match any more
    - Add a test for this scenario, more tests needed
Make index updates properly idempotent

- Improve timestamp support for queries:
    - use placeholder syntax & Long conversion for the parameter
    - don't use it with the .if condition
- Make index updates properly idempotent by using proper timestamps for the
  respective queries:
    - data updates use the corresponding data row's timestamp
    - _del updates use the index update's timestamp, so that the most up to
      date index update wins
- Improve tests by checking the full results of get queries
Merge pull request #15 from gwicke/index_cleanup

Secondary indexing & general spring cleaning