Generify TupleDomain

This is a precursor to splitting the *Handle hierarchy so that connectors don't need to be aware of connector ids
Use "dual" for dual connector id

Some tests were incorrectly using MetadataManager.INTERNAL_CONNECTOR_ID
Split Handle hierarchy

There are now two parallel Handle hierarchies: global vs connector-specific. SPI operates in terms of the connector-specific hierarchy. The engine (analyzer, planner), operates in terms of the global hierarchy. Metadata/SplitManager/etc take care of wrapping and unwrapping calls and routing to the appropriate connector based on the connectorId embedded in the global handles.
Unify handling of information schema metadata and other internal connectors

They are all now treated as internal connectors. ConnectorManager is now responsible
for installing the information schema metadata when appropriate
Remove need for canHandle(...) in ConnectorMetadata
Register dual and system via ConnectorManager

LocalQueryRunner was installing the metadata, split manager and
data stream provider manually instead of relying on the existing
SystemConnector and DualConnectors
Remove need for canHandle(...) in SplitManager and DataStreamProvider
Remove need for canHandle(...) in RecordSinkProvider
Remove need for canHandle(...) in IndexManager
Fix typo in TimeZoneKey
Change date time format and parse functions use locale in session
Add check for unhandled type
Fix size of encoded pages

This encodes pages on the wire using the actual buffer size rather than the
allocated buffer size (which is at least 64k even for an empty page).
Remove unused pages reading code
Simplify PagesSerde