Fix tricky typedef'ed identifier bug.

The following code is completely valid in C.

  typedef int x;
  int x = 3;

We rejected such code because the declaration looks as if
it has two type names (int and the user-defined type).
Add usual conv to unary minus.

This change fixes an assertion error when performing unary minus on
char or short.
Add a file comment.
.gitignore: remove obsolete entries and sort the lines.
Cleanup.
Stray character is a valid pp-token.

There is a list of pp-tokens in C11 6.4. The last entry of the list
is "each non-white-space character that cannot be one of the above".
That means any character can be a valid pp-token at the lexer level.

We rejected such stray characters at the lexer.

The difference is not significant because a stray character will
cause the compiler to fail, but that's visible if you run only the
preprocessor using -E.

(It is interesting to find that preprocessing output of GCC 4.8.2
is wrong for the following code.

a \\
 b

GCC expands this to

a \
 b

8cc and Clang correctly expands that to

a \ b

No one would really care about this because the output is not valid
C code though.)
String concatenation shouldn't be done at the preprocessing phase.

The preprocessor is phase 4, and the string concatenation is phase 6.
(See C11 5.1.1.2 about the translation phases.)
8cc concatenated strings in the preprocessor, and that difference
was observable if you pass -E option.
Fix a null dereference.

Fixed a null pointer deference if a call argument is a keyword.
Fix static void pointers which point to label addresses.

Segfaults occured if a static pointer was assigned to
an &&label value, this was because the OP_LABEL_ADDR case
hadn't been handled in gen.c. A test case was added.
Allow global variable declarations to default to int.
Cleanup: split macro argument parser into a small functions.
Untabify.
Cleanup: rename "tostring" functions.

Short names are generally good but they are too short.
Reanme a2s -> node2s, c2s -> ty2s, and t2s -> tok2s.

I tried to use C11 _Generic to define a generic "tostring" macro
like this.

#define S(x) _Generic((x), Node*:node2s, Type*:ty2s, Token*:tok2s)(x)

However this didn't compile with GCC 4.8.2 (Clang 3.4 did).
It may also be confusing to those who are not familiar with the new
C11 feature. So I decided to not use that.