(#74) - use promises instead of callbacks + cleanup

This commit cleans up implementation of persistent views introduced in
(#68). This commit significantly decreases complexity of error handling
as well as the general look of the code.

* TaskQueue uses just promises
* removed createKeysLookup which was a strange optimization in very rare
  edge case most likely resulting in code being slower
* defaultsTo - nice way to recover with some value if document was not found
* Promise.all - don't count promises manually
* sequentialize - nice way to make some function calls in sequence (for
  java funs: synchronized)
* minor cleanups
(#104) - add test for cleanup of duplicate indexes