Emitter: Simplify call evaluating, and explain an interesting case.

I couldn't figure out why emitter's call arg evaluating had template matching
after checking that signatures were equal. It turns out that doing so was the
right move.

I've added a test which demonstrates why. One generic function is called from
a second one. The second one passes A, then integer. Without doing template
matching even though the signatures match, the interpreter will think that
the integer satisfies the callee's A. It doesn't (it was satisfied by the
caller's A).

Also, kill generic_type_matchup and fold it into call arg evaluating (as well
as simplifying the whole thing overall).
Emitter: Ban nested assignments, conditions over assignments.

This disables things like 'x = (a = b)', as well as conditions that are
assignments. The reason for this is entirely from my personal dislike of both
of these kinds of things. So they're now banned.

Added two tests: One for checking conditions, the other for nesting assigns.

Assignment chains, however, are still allowed. Just not assignments within
some non-assignment tree.

Oh, there's over 100 tests now, which is pretty nifty too.
pre-commit-hook.py: Fix printing (3 digits now, and a newline at end).

I accidentally forgot to put a terminator at the end of the printing for
failing tests, so failing/crashing tests were coming out all crammed together.

Also, the other part is because there are over a hundred tests now, with more
likely on the way.