New exception framework, phase one.
Added new class, ErrorState, for handling errors when exceptions are disabled.
When exceptions are enabled, ErrorState<T> is an alias for T.
When they're disabled, ErrorState<T> additionally encodes an error code, and will have junk data (and probably a crash) if an error is returned and not checked before the data is used. ErrorState<T> is implicitly convertible to and from T, so applications that don't care about errors can code like they don't exist...
Phase two will involve overloading operators on ErrorState so that things that return ErrorState can still function as much as possible like they do when exceptions are enabled.