Modify based on Carl's previous patch:
1. fix concurrency issue but locking DB for every table too
2. fix CREATE TABLE AS and CREATE TABLE LIKE. Also, CREATE TABLE AS to share the same codes to generate default path as CREATE TABLE
3. fix TABLESAMPLE, DROP TABLE, DROP TABLE, ALTER TABLE DROP PARTITION, etc.
4. fix the same table names in different databases in the same query. (PartitionPruner's key's problem)
5. fix character escaping problem.
6. fix TABLE ANALYZE to mistakely allow xxx.xxx
7. fix DynamicSerDe just to get unit test pass.
8. lots of test case results changes, since in DESCRIBE EXTENDED, table names are printed to be default.tab instead of tab. I found the possible way not to print "default" to make less change to test outputs is more risky. So I didn't try that. But I ever implemented it on my machine and make sure those test output modifications are right.
1. I didn't figure out the necessity to modify SemanticAnalyzer.processTable() not to use aliasIndex in Carl's patch, so I revert them.
2. DESCRIBE a foreign table is not supported and we don't give good error message.
3. `db.tab` is not blocked so far since I found it's a pretty complicated issue and might need more thinking.
4. UnparseTranslator becomes a little bit urgly now to unescape identifiers. I found it's really hard to keep Carl's syntax rules and still support it in a clean way. Maybe as a follow-up to make DB and table two different tokens, instead of parsing 'xxx.xxx' to semantic analyzer.
I'm still running test suites from the beginning to the end. There still can be something broken.