Allow `#{}` on the rhs of letstx and withSyntax

This fixes the surface-level bug of #217 by pushing the rhs expr expansion into an `invoke`ed macro, which expands it before it goes into either macros, giving it the correct context for `#` to work.

I had to change the pattern matcher signatures to take a `context` instead of just an `env` so that I could give `expr` and `invoke` a complete expander context. Otherwise `templateMap` was empty, and `#{}` wouldn't work.