Use the newly available space in the bit-fields of Stmt and store the
string data in a trailing array of chars after the trailing array
of SourceLocation. This cuts the size of StringLiteral by 2 pointers.
Also refactor slightly StringLiteral::Create and StringLiteral::CreateEmpty
so that StringLiteral::Create is just responsible for the allocation, and the
constructor is responsible for doing all the initialization. This match what
is done for the other classes in general.
Two points I am wondering about:
The original version used type punning through an union. Here I am just
reinterpret_casting back and forth between char * and uint16_t */uint32_t *.
There is a FIXME in ASTWriterStmt.cpp (see the end of the diff) which says that
storing the string past the StringLiteral would cause problems with abbreviations.
The note dates from 2009 and everything *seems* to be working just fine. However
I am not familiar with this and it is possible I am missing something here.