Fix generating invalid query plans
Fix resource leak in HiveSplitSource when queries terminate early

Hive queries that don't consume all splits can leak threads that get
stuck trying to acquire the semaphore that controls how many HDFS
tree walkers run concurrently.

This change makes split sources closeable to allow for proper cleanup.
Set thread names for hive split producer and hdfs walkers
Categorize invalid VARCHAR casts
Switch to Airlift Threads class
Fix thread naming for single threaded executors
Fix warnings in HiveClient
Replace instanceof with checkType in Hive connector
Refactor formatting for SortItem
Add formatting for every statement type
Move parser utility classes out of tree package
Categorize bad data errors in Hive connector
Categorize illegal arguments to date parsing functions
Add error code for "no nodes available" error
Add toString to HiveBucket
Move error code tests to SPI
Add additional tests for StandardErrorCode
Add validation to ErrorCode
Finish properly parameterizing TupleDomain
Categorize remote task errors

This includes http 500 from workers, which is frequently returned if
they're in the process of shutting down.