Extendible hashing implementation

This pull requests implements the following changes:

- SpillMap uses an extendible hashing technique to distribute the spilled elements to pages on disk and dynamically grows the hashing space. For details to the algorithm, please refer to the following slide deck:
http://db.inf.uni-tuebingen.de/files/teaching/ws1011/db2/db2-hash-indexes.pdf

- GroupByCache now fully implements the Map interface, and thus can be abstracted as such and created from within a factory.

- Added a couple more aggregates to the unit test and increased the row insertion number.