Revises function handling to use new overload definition.
This breaks some previous C test cases, which must now be revisited.
Adds a `kind()` function to `definition` to help with error reporting.
Template functions will follow after regular functions are working.
This revision has not been tested for leaks.
Fixes C regressions. Simplifies and corrects struct/union/enum handlers.

The struct, enum, and union handlers now use the same boilerplate header to handle their parsing. It uses some macro hacks to reduce the number of parameters needing passed. Since it only reduces this count by one, they may be removed in the interest of portability (I believe they are standard, however).

All structure, class, enumeration, and union definitions are now stored in the c_structs collection, which is now built into every scope. This means data no longer means moved there, so there's some dead code lying around the parser that does so (Originally, to remove the need for checking to prevent duplicate frees, definitions were only moved to the c_structs collection when they conflicted with other definitions in that scope).
Fixes the toString methods and AST's -> evaluator.
The former indented template functions pretty screwy.
The latter didn't work when the left operand was a template parameter or dependent type.
Next, fixing is_pointer.
Fixes is_pointer, is_const, and a memory leak in instantiation.
This was handled with minor kludgery. Operators == and != were added to `ref_stack::node` to facilitate comparing stack tops. The function to do so is `ref_stack::ends_with`.
This function was needed for augmenting the less-than comparison in arg_key, which now checks flags and pointers. This system may need tweaking to prevent mathematical consistency issues (`a < b` may not imply `!(b < a)`).
The memory leak was due to the refactoring of how classes/enums/unions are stored; enums were not getting freed from the duplicated template classes because it was assumed they were in the c_structs list, which was not copied.