feat(database): implement index/query API

Implements:
- `db.addIndex(name, {map: .., reduce: ..}, callback)`
- `db.removeIndex(name, callback)`
- `db.query(index, options, callback)`

Implementation based on discussions:
- https://github.com/hoodiehq/hoodie-plugins-api/issues/3
- https://github.com/hoodiehq/hoodie.js/issues/70#issuecomment-20506841

Closes #3
since we have underscore available, why not use `_.isFunction` ?