Some refactoring for 2.0

List of changes:
- Removed the ``ConcurrencyMiddleware`` (https://github.com/msiemens/tinydb/issues/18)
- Optimized cache searching for ``SmartCacheTable``
- Less conditionals using the ``float('nan')`` in place of a falsy cache size
- Replaced copy-pasted code with ``super(...)``
- Use ``dict.items`` instead of ``data[eid]``
- Embrace EAFP when doing ``table.update`` and ``table.remove`` for smart caches