Implement cap() builtin.

(Except for channels of course.)
Remove TODOs that are done
Partial implementation of panic()

Using C++ exception handling mechanisms,
because I'm lazy and it's there already.

Yet to be done is recover(). I'm unsure
of how to do this nicely, as only the
deferred function may recover, and not
any functions called by it.
Partial implementation of recover()

Store caught exception interface{} in TLS, clear it
when recover() is called. If it's still there when
runtime.after_defers is called, resume exception.

We're still not there yet:
 - recover() from a function called by a deferred function
   will still clear the error, which is not permitted by
   the spec.
 - panic() from inside a deferred function currently
   throws an exception immediately, whereas it should
   continue running all deferred functions.
Use external tools for compiling/linking

This is necessary to produce binaries with
exception handling information, for panic/recover.

Also, only compile runtime once.
Tests are reasonably fast once again (~.3s each)

P.S. I started porting to gocheck, but decided it
wasn't worth adding another layer and dependency
just to get setup/teardown. Instead, we manage a
temporary directory in the main process, then
spawn another process to run the tests.