Fix the AST type of strings to be char[]

Fix attached. Mostly straightforward, although the
GenerateConstantExpr bit is a little messy. I think the fact that few
changes are required shows that the AST representation and sema are
quite flexible.

I ran this against the testsuite; it introduces some spurious failues
due to error messages changing slightly, and causes a couple of real
failures due to the broken struct initializer sema (types in struct
initializers don't get fixed up at the moment, so initializing a char*
member with a string breaks). To work around that, we can temporarily
change the tests to work using an explicit char* cast, which will
force the introduction of the necessary implicit cast.

This change doesn't have many visible effects; here's a couple of testcases:

void b() {
int aa[sizeof "SizeNineteenString" == 19 ? 1 : -1];
char (*asdf)[19] = &"SizeNineteenString";


stringtypefix.1.txt (5.59 KB)