[SPARK-2594][SQL] Add CACHE TABLE <name> AS SELECT ...

This feature allows user to add cache table from the select query.
Example : ADD CACHE TABLE AS SELECT * FROM TEST_TABLE.
Spark takes this type of SQL as command and it does eager caching.
It can be executed from SQLContext and HiveContext.

Recreated the pull request after rebasing with master.And fixed all the comments raised in previous pull requests.
https://github.com/apache/spark/pull/2381
https://github.com/apache/spark/pull/2390

Author : ravipesala ravindra.pesala@huawei.com

We can remove `as ~` if we use `opt(AS ~> select)` in line 186.