Some refactoring and initial code for Hive-partitioned tables.

There are a few TODOs in the comments to address sketchy additions/API changes...
The most notable one is SharkSemanticAnalyzer#analyzeCreateTable().

Also adding comments inline to describe some of the TODOs.