compiler: Make it possible to throw([a, list, from, monte]).

Or, rather, make it possible to catch and pattern-match on such objects.

Also update tests.
unittest: Add ejects() method for asserting that an ejector fired.

Provides a nice easy way to prove that guards reject certain assignments.
regions: Add a test for guard ejection on failure.

Longest test of my life.