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
That will propably lead to problems when having multiple instances of the storage as now the memory attribute is shared between all class instances. Could you test this case?