emitter: Simplify template_check.
symtab: Simplify circularity marking in lily_ensure_unique_sig.
lily_build_ensure_sig, build non-templated sigs for call returns.

There is a new function called lily_build_ensure_sig. This function takes
the symtab, a lily class, a siglist count, a siglist, and a siglist offset.
From these, it builds a sig and uses the siglist (without mallocing) to do a
lookup. If the sig doesn't exist, then it's created and installed in the
symtab.

This function is used in two ways: The emitter uses it to build a signature
that doesn't have templates from one that does (this is necessary for returns
like list[A] or maybe[A]). The parser now uses this to build signatures for
simple templated types.

This will cut down on memory usage from the parser (no more creating a list
of integer only to have to throw it away). I also unified parsing for lists,
hashes, and tuples to cut down on redundancy.

I also kicked out the circularity + template counting code into a new symtab
function called finalize_sig. Symtab is a bit rougher until finalize sig is
finally gone.
Tuple literals can start an expression, and fix test_cliexec.py
Made test_cliexec.py into a precommit hook. It also auto-sets stderr/stdout.

A lot of tests had stderr/stdout as "", so I fixed the hook where either of
those being unset would default it to "". This makes the tests smaller. I've
also installed a pre-commit hook that references this script, so hopefully
there will be fewer breaks from now on. :)
Merge most fail tests into pre-commit-hook.py. Also a symtab fix.

I accidentally left some fprintfs in the code, so those were removed. More
importantly, I removed all of the failing tests that I determined to be too
simple to be in a file and merged them into pre-commit-hook.py. I've decided
to leave a few around because they're more complicated than a couple lines.

This is good because it means that fewer tests will simply rot or never be
used as often as they should.