dm's refactoring; new exception approach

- Generalized io lifting
- No more labeled exceptions
- Move from grouping modules based on features to TCB vs. non-TCB
- Use IORef in LIO state
- Random OCD stuff

@alevy: stab @stanford-scs for this

@dterei : mark `mapException` as Unsafe please :)