LRU cache replacement & dynamic resizing

This pull requests replaces the guava LRU cache with a simple LinkedHashMap implementation. The cache now resizes by a factor of 1.5 in case the current size threshold is exceeded. It starts spilling once an InsufficientMemory exception is thrown.

Added a couple more optimizations:
- dirty page detection -> prevents unnecessary page flushes.
- delete spilled records that are in LRU cache upon bucket redistribution.