Allow custom update methods

Implementation of #40
More elegant update syntax
Clean up leftovers of old version
Move check out of in `_update`
Fix typo
Implement update operations
Document update operations
Add tests
Create infrastructure for custom table classes

Now one can set which table class TinyDB should use by setting the
`table_class` attribute on the TinyDB class or instance. This
gives us the flexibility to introduce more powerful features in
custom table classes without flooding `TinyDB.__init__` and `TinyDB.table`
with additional special arguments.

This also deprecates the `smart_cache` argument of `TinyDB.__init__` and
`TinyDB.table` in favor of this feature.

Example:

    TinyDB.table_class = SmartCacheTable  # For all new instances
    db.table_class = SmartCacheTable  # For all new tables
Merge pull request #41 from msiemens/prototype-update

Add update operations
Merge pull request #43 from msiemens/custom-table-class

Create infrastructure for custom table classes
Add feature to declare custom eids during insert.

Custom eids grant meaning to the otherwise surrogat values.
When using custom eid values, the user has to check for
possible overrides/updates.
Add IndexTable inherited from Table for custom eid support.
Merge branch 'user-settable-eids' of https://github.com/mamrehn/tinydb into user-settable-eids