[imp #14] Choose view types on query

Currently, one has to choose the types of the key, values and documents
upon view creation. This is not well suited for CouchDB, especially for
value types, which may change whether we reduce the view result or not.
By making this choice only on view query, we can have more fine-grained
control over the expected types.
Ideally, it would be even better if, e.g. a query with `include_docs`
set to `false` wouldn't require the user to provide the `Doc` type.

This is the first step toward issue #14.
[imp #17] Add raw view API

This is raw in the sense that objects are not extracted to scala classes
but instead are sent back as json objects. This can be useful when
dealing with views that may return different object types. Use it if you
have no usable (I mean something more specific than `Anyi`) common super
type for your results and/or documents.

This contributes to #14 and close #17
Merge pull request #22 from gnieh/wip-new-views

Improved view API
Improve database API

This is a breaking change!
When a document is saved, the saved revision is returned, if all went
well, the document is returned from the database, not an option.
If something went wrong, then a `SohvaException` is raised.
Skeleton for Lucene integration