Fix race condition when updating sources

The current implementation has a potential race condition under the following scenario:

Task updater              Driver

                          acquire lock
                          process new sources
                          ...
                          process new sources in lock release code
add new source
fail to acquire lock
 (sources not processed)
                          release lock

This results in new sources not being processed and the query getting stuck
if the task updater never call update sources again and the driver becomes
blocked because data from all current exchanges are consumed
Remove unused methods on Page
Convert Page size to be a long in bytes

Simplify OperatorContext stats
Remove Page dependencies on Guava
Remove Page.getSingleValueBlocks(position)
Move Page to SPI
Remove PageBuilder dependencies on Guava
Move PageBuilder to SPI
Add ConnectorPageSource to SPI

Move ConnectorDataStreamProvider to SPI and rename to ConnectorPageSourceProvider
Simplify InformationSchemaPageSourceProvider using a FixedPageSource
Replace AlignmentOperator with RaptorPageSource
Merge InternalConnector into Connector
Support Cassandra String based partition keys
Remove verifier limit of 50 threads
Remove pluggable global connectors

We only have one connector (the system connector), so get rid of the abstraction.
Also, since the system needs to have specialized logic for dealing with sys tables,
get rid of the system connector. We'll revisit this once we figure out how we
want to model it going forward.
Don't forward requests for well-known schemas to connector

This requires hard-coding knowledge about sys and information_schema in
MetadataManager. It's a hack until we figure out how we want to model
these going forward.
Create AsyncResponseHandler builder pattern

- Replaces AsyncResponseUtils
- Adds ability to asynchronously cancel on client disconnect
Include response body in remote task error message