Guards are confusing.

The tests fail. Should they fail? Guards aren't doing the things that I'd
expect them to.
Syntax isn't Pythonic. Also, suchthat?

monte.lexer.ParseError:
                match n ? (n < 3) { return 0 }

               ^^^^^^^^^^^^^^^^
Parse error at line 20, column 15: Indented blocks only allowed in statement
positions.

Monte-for-wizards.txt strongly suggests that that's the correct syntax,
though.
TIL about brackets
Comment on what not to do
Handle switches correctly and add tests

test_switch.mt shows examples of the valid syntax for them.
Same guard
Subrange guard
Add Module support to AST
error reporting code shot as requested
fix up self-reference to always include binding
get serious about subranges
handle custom bindings in frames properly
propagate bindings in 'extends' expansion
prepare for staged safescope
regions
build safescope from boot scope and prim modules
Merge branch 'master' of https://github.com/monte-language/monte