Smart caching and cache options

Better performance of the query caching behaviour can be expected if the developer turns on the `smart_cache` option for tables. For example:

```python
db = TinyDB(MemoryStorage)
table = db.table(smart_cache=True)
```

Basically smart caching just updates the query cache with the right items whenever an insert is made, and doesn't invalidate the entire cache whenever one new document is inserted into the table. The `cache_size` option dictates the maximum size of the query cache, and the db will randomly pop one key from the query cache if the size exceeds the maximum size. It defaults to 10.