WIP: Add create_index / drop_index functionality

closes #488

* `create_index`
  - [x] `sqlite`
  - [x] `pytables`: this is slightly different in that you generally don't name your index with this engine
  - [x] `pymongo.Collection.create_index()`
  - [x] need to investigate other backends that might support indexes
  - [x] test `unique` parameters where possible (sql and mongodb so far)

* `drop`
  - [x] `tb.Table`
  - [x] `pymongo.Collection`
  - [x] SQL
  - [x] HDF5
  - [x] CSV
Probably don't want to raise `AssertionError`.  We probably want to raise a `ValueError`?  At the very least we don't want to ensure that this raises and `AssertionError`.  Two solutions

1.  Raise and test for `ValueError`
2.  Relax test to test for `Exception`