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
IMHO you could skip the following lines

 * 155: Because you already defined the two models with the same attribute
 * 156: Just leave out the expectation
 * 157: You only need to check if there is an error on `:unique_attribute` which relates to the index thus skip this line
 * 159: Skip this because we already tested a validation error will not save the model