Add support for indexes to Collections

Implement other indexes as well as the API to create and destroy them.

TODO
=====
- [x] Add support for hash indexes
- [ ] Add error messages on index constraint violations
- [ ] Add support for geo indexes
- [ ] Add support for skip list indexes
- [ ] Add support for full text indexes
- [ ] Update README.md
It seems the id method of Index should return a string with the numerical id but indices method on collection accepts a Fixnum. This is contrary documentation and also probably incorrect since id returns a full raw index id