Merge branch 'spark-ddl-task' into partition-caching

Conflicts:
	src/main/scala/shark/SharkDriver.scala
	src/main/scala/shark/execution/SparkDDLTask.scala
	src/main/scala/shark/parse/SharkDDLSemanticAnalyzer.scala
	src/test/scala/shark/SQLSuite.scala
Get merges to compile.
Add a CachePolicy abstract class, with an LRUCachePolicy implementation.
Have separate MemoryTable classes for Hive-partitioned tables and non-partitioned tables.
Make MemoryMetadataManager compliant with new (Shark) Table API.
Directly use MemoryTable API to access RDDs in relevant classes, instead of going through MemoryMetadataManager.
Update tests to account for new MemoryMetadataManager API
Some sanity checks for casting in MemoryMetadataManger.
Test skeleton for cache policies.
Add API for accessing cache stats.
Add table property for whether or not to record cache stats.
Add unit test for 'shark.cache.partition.CachePolicy.shouldRecordStats'.
Move CachePolicy unit tests from SQLSuite to a new CachePolicySuite.
Move RDD unpersist() helper methods to RDDUtils.
Unit test to make sure that LRUCachePolicy is the default.
Distinguish between the current StorageLevel of a table's RDD(s) and the preferred StorageLevel passed  at table creation time.
Put LRUCachePolicy in its own file.
Properly account for INSERT INTO/OVERWRITE.

Use RDDUtils to find StorageLevel, due to non-persistence of UnionRDDs.
Move CachePolicySuite tests back to SQLSuite.

Also, gave clearer names to partition-caching table properties.
MemoryTable.scala => Table.scala