[SPARK-4152] [SQL] Avoid data change in CTAS while table already existed

CREATE TABLE t1 (a String);
CREATE TABLE t1 AS SELECT key FROM src; – throw exception
CREATE TABLE if not exists t1 AS SELECT key FROM src; – expect do nothing, actually will overwrite the t1.

This PR actually contains the following change:
1) Fix bug describe above;
2) Whitelist the test case.
3) Disable the file split for small single table file(make input splits based on HDFS block)
4) Decimal type in Hive 0.13 is not compatible with in Hive 0.12, we should map them both to `DecimalType`
Actually this test will fail without the change https://github.com/chenghao-intel/spark/blob/ctas_unittest/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala#L63 . I described root reason for this at #2589.
Sorry I should put as independent PR, however, the 2 added test(`ctas.q`,`ctas_hadoop20.q`) cases will fail without this.