Rework structure of hash table.

This patch does two things in preparation for external joins. The
hash table used to contain a directory structure (buckets and nodes)
both of which were contiguous. The nodes contained the tuple ptrs
within it.

This patch changes it so the nodes are not stored contiguously but
allocated in pages. (this structure is dense and does not require
random lookups by index). The bucket structure is still contiguous
since we rely on the doubling property and random lookup by index.

The second change is that the node's no longer store the tuple ptrs
within them. This makes it easier to build the hash table ontop of
existing data.

Here's a quick benchmark doing a self join on tpch lineitem. Both
build and probe times decreased a bit.

Before:
 HASH_JOIN_NODE (id=2):(Total: 1s139ms, non-child: 985.939ms, % non-child: 86.50%)
         - BuildBuckets: 2.10M (2097152)
         - BuildRows: 6.00M (6001215)
         - BuildTime: 527.991ms
         - LeftChildRows: 6.00M (6001215)
         - LeftChildTime: 451.964ms
         - LoadFactor: 0.50
         - RowsReturned: 30.01M (30012985)
         - RowsReturnedRate: 26.33 M/sec
After:
HASH_JOIN_NODE (id=2):(Total: 1s019ms, non-child: 835.350ms, % non-child: 81.97%)
         - BuildBuckets: 2.10M (2097152)
         - BuildRows: 6.00M (6001215)
         - BuildTime: 423.175ms
         - LeftChildRows: 6.00M (6001215)
         - LeftChildTime: 406.67ms
         - LoadFactor: 0.50
         - RowsReturned: 30.01M (30012985)
         - RowsReturnedRate: 29.45 M/sec

Change-Id: I79e209a24c24fb4f2f99574bcf187746fddadc06
Reviewed-on: http://gerrit.ent.cloudera.com:8080/3245
Tested-by: jenkins
Reviewed-by: Nong Li <nong@cloudera.com>
Change how we do right/full outer joins to maintain a bit in hash table.

We used to maintain a separate hash table (in the form of a boost
unordered set) to keep track of the build rows that have been matched.
This patch changes it by just keeping a bit in the hash table. It is not
possible to use boost::unordered_set for tables that are large.

Change-Id: Ie36e609bf79e5e7e403417a3c02a0817d37acc60
Reviewed-on: http://gerrit.ent.cloudera.com:8080/3478
Reviewed-by: Nong Li <nong@cloudera.com>
Tested-by: jenkins