Parser: Variant class names need to be unique, and a test.
Parser: Don't check for name clashes with builtin functions.

This was causing a function when doing "".concat after a global concat
function was defined. I think it's safe to assume that builtin sources are
smart enough to not redeclare symbols.
Add a test for a nested match.
Emitter: Cut code for setting sigs at the bottom of functions.

The reason this code was needed is that various tree eval functions in emitter
were attempting to resolve any signature given. However, now that did_resolve
is now passed to each tree, there's no chance of something being resolved that
should not be resolved.

So this is no longer necessary. Yay less code!