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
- Fixed a bug where the Element isn't valid when an empty document is inserted