Make Index monadic

- makes all Index functions monadic
  - except for 'empty'
  - no 'mapM' functions
- 'addWords' is not implemented yet
  - requires some sort of 'foldrWithKeyM', which is not provided by
    Data.Map or Data.Foldable. The keys library by Edward Kmett
    provides FoldableWithKey (Map k), which supports 'foldrWithKeyM',
    but also includes the usual kmett dependencies.
    http://hackage.haskell.org/package/keys/docs/Data-Key.html#v:foldrWithKeyM
Implement monadic 'addWords'

- add 'foldrWithKeyM' and 'foldlWithKeyM' to Utility
Add 'empty' to DocTable type class
Cleanup
Merge branch 'monadic-index'