Huge cleanup of exceptions in several of the "core" modules.
Fixed a couple of places where Choice.mapError was used when Choice.bindError should have been used.
Modified the type signatures of some functions to use the new Protected<_> type.