Fixing spacing in output
Copying strings into constant region
Handling cout << string explicitly

Since we are not trying to dereference C strings, but use the char *
directly, this needed to be a special case.
Handling external C functions

If a function is not defined (that is, its symbol table is NULL), call
the function directly in TAC-C. This requires iterating backward to get
parameter addresses, but allows full C functionality. C headers will not
automatically pull-in prototypes, so a faux C header with common ones is
included, and others can simply be declared in source files. TODO: pass
C headers through to TAC-C.
Using asprintf over multiple uses of strcpy in lexer
Cleaning some parentheses
Using constant strings directly
Revert "Handling cout << string explicitly"

This reverts commit 84e7fec67df07445dca1c5ee046f938868ead61a.

Handling constant strings correctly negates the need for this incorrect
bugfix (which fixed constant strings but broke non-constants).
Using strdup() in faux std::string to copy on initialization

Hence the need for C handling
Slight test updates
Passing through C libraries

- Adding math.h test / example usage
- Definitely cannot support stdio.h because variadics
- Faux string header uses strdup() and so needs string.h
- Common C prototypes added only when a C header is included
- Better regex for include files