Add support for extensible types to the execution engine

This is the base work we need to add extensible types.  This is change replaces the fixed types in TupleInfo/TypeInfo with an extensible Type interface.  The change handles only the execution engine and specifically does not touch the planner or the connectors, which will require more work.  Since this code replaces a small fixed set of types with a generic interface there was a large performance drop off, and this patch contains several performance improvements to make up for this deficit.

Replace all code that manages Slices directly with RandomAccessBlocks
Rewrite BlockEncoding to be extensible
Replace TupleInfo and TypeInfo with single Type interface
Rewrite GroupByHash and HashJoin to improve performance
Generate Comparator, JoinHash, and JoinProbe to improve performance