Preliminary analyzer and emitter support for loop and recur

At the moment, the JavaScript output for the loop and recur special forms
is invalid. However, loop and recur are now both recognized as special, and
the infrastructure to implement them properly is in place.
Begin including :context in env during analysis phase
Spread :context around more to improve loop/recur compilation
Add a few more cljs.core fns to core-defs
Remove many bugs from :context-based emission behavior
Stop spewing semicolons everywhere in the emitted JS
Hacky fix for macro compilation under :context-based emission
Temporary good-enough emission of compiled macros