[SPARK-2594][SQL] Add CACHE TABLE <name> AS SELECT ... (Updated as per review comments)

Updated as per the review comments of Admin.
Previous pull request is https://github.com/apache/spark/pull/2381
Actually `opt(AS ~> select)`, since we don't care the semantic value returned by `AS`.