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