Add Index as data type without typeclasses
- following the design of test/Index.hs but less abstract
  - no interface/function overhaul, more or less compatible with the
    old type class interface (no merge and doc id functions)
  - no type parameter (yet)
- includes the PrefixMem implementation
Add implementation type parameter to the Index, implement merge etc.

- The added type parameter represents the implementation of the index
  and allows to write a function to access the specific implementation
- Merge and subtract functions are implemented using this accessor
Add Index to cabal file
Add updateDocIds implementation to the Index

- Add implementation for updateDocIds updateDocIds'
- Remove _updateDocIds' Index field because it is just a convenience
  function that is not tied to a specific Index implementation
- Move implementation specific part of the Index into the PrefixMem2 module

- Add toList and impl implementation
- Add implementation independent fromList implementation which expects an empty Index
Remove _insertPosition und _deletePosition from Index

Replace with default implementations exposed by the Index module
Replace type class implementation with data type implementation

- Add DocTable datatype and module
- Replace old PrefixMem.hs with PrefixMemLT.hs
- Rewrite HashedDocuments without type classes
- Remove old type classes from Index.Common
- Adjust the Query implementation to work with the new structure
  - monadic query functions use the non-monadic Index/DocTable
    functions for now.
- Adjust the Server to use the new implementation
- Move utility functions into the Holumbus.Utility module and cleanup
Add value type parameter and value proxy to DocTable

- Add value (Document) type parameter to DocTable
- Add a value conversion DocTable which can be used as a proxy
  with two conversion functions (bijection)
- Adjust DocTable and Indexer type signatures
- Switch deleteById argument order
Add a HashedDocuments implementation using a value conversion proxy

There may be issues with this approach, e.g. insertDoc will cause the
proxy to compress the document before insertion and the implementation
will uncompress it immediately afterwards to get the URI