Add IExitHandler, and global pointer gExitHandler.

All static error handling methods now notify the global exit handler,
gExitHandler, should it exist. libplatform can then be notified of
an exit condition, and have full access to appropriate data for the
CrashStore.

There's one hole in this implementation: TestFramework wants to install
an assert handler that throws AssertionFailed, and all unit tests rely
on this. The solution may be to kill SetAssertHandler() and replace it
with something more explicit, like SetAssertThrows(TBool)
Remove ability to change AssertHandler.

AFAICT, the only client of this was TestFramework. In order to support
libplatform's requirement to hook into ohNet error handling, it made sense
to narrow the ability of client code to alter assertion-handling
behaviour.

The previous API allowed client code to completely override the assert
handler, which conflicts directly with the IExitHandler strategy.