Make try / except work

Issue: #38 on Github
Issue: 109 and 114 on Google Code

I did this by not generating a JavaScript try block, but instead
added a try/catch around the whole run-time switch loop.

Each Python try/except already did a push/pop of the except block
on the $exc stack. So if the outer JS try/catch is triggered,
it checks the exception block stack and jumps to the exception
block.  If there is no active exception, it means some other
runtime error has occurred so the JS rethrows the exception
so it is exposed to the user in the browser.

This approach makes it far easier to implement the full
try/except/else/finally as any nesting issues are no longer
a problem - I did not implement that in this fix - but note
that it is now easier if someone wants to do it.

I am sure this code could be improved by someone more intimate
with the runtime.

*** This change may need to be adjusted for all the other instances of
switchCode and suffixCode in src/compile.js

Not knowing how to test those other cases I left them alone.
At least the changes to setupExcept and endExcept will insure
that the generated JS will be syntactically correct.  The worst
that will happen is that when code in a try block blows up, we
will not know to run the except block.  The other problem is that we
might catch something that is really an internal error - it might be
nice to add code in the above catch block that looked at
the kind of exception and only popped the stack for exceptions
that are from the original code rather than artifacts of some
code generation or execution environment error.  We at least
err on the side of exceptions being revealed to the user.

I added comments to these effects in the code - you may want to
remove those when you do the pull / merge of the changes.  I
just wanted to leave a really clear trail.