More detail when analyze-file throws exceptions

I know the code changes to that function look horrendously huge, but
it isnt' as bad as it looks at first.  Mostly combining two binding
forms and two let forms together early on, and then consistently
checking for exceptions and stopping immediately at any of 4 places:

    analyze-form
    eval of ns form
    emit-form
    eval of other forms

Then in core.clj print which of these places the exception occurred
in, and the form being analyzed, in addition to the exception details
that were being printed before.

Try it out.  Except for the length of output, you might like it.  You
might even like the long output if you are debugging a new exception
you haven't seen before.