Fix labeled-statement.

The labeled-statement is defined as

  identifier : statement
  case constant-expression : statement
  default : statement

That means the labeled-statment contains the following statment.
The statement

  if (cond) L: foo();

for example should be evaluated as

  if (cond) { L: foo(); }

instead of

  if (cond) L1; foo();
Create default output file in the current directory.

8cc used to create the output file in the same directory as the source
file if no -o option is given. That's an unusual behavior as a C compiler,
because other C compliers create the default output file in the current
directory.

8cc now follows the other compilers. If no -o option is given, the output
file name is created by stripping all directory components from the input
path and replacing the suffix accordingly (.c -> .o or .s).
Rewrite Makefile to clean it up.

Also simplified the directory structure a bit.
Makefile: Compile with -O2.
Makefile: use stage[123] files in make fulltest.
Allow preprocessor directives in a func-like macro argument list.

This is compatible with GCC and Clang.
Update README.
Fix typo.
Rename threedots -> ellipsis. I think the new name is better.
Cleanup: remove gettime().

Previously we call time(2) when we need a timestamp and cache the result.

This patch makes the initializer call time(2) unconditionally
and set the result to a global variable. This simplifies the
code a bit.

The cost of time(2) is negligible. I guess it doesn't even enter
to the kernel because it can be implemented using the user-accessible
TSC counter.

The reason why we store the result to the global variable instead of
calling time(2) every time we need a timestamp is because we want
consistent results. I don't want 8cc to expand __TIME__ macros to
different strings when it processes a long source code which takes
more than 1 second to finish reading.
Merge branch 'master' into testcases