Refactor fatal error handling
No longer uses ob_start() / ob_get_contents() but a combination of
register_shutdown_function() and error_get_last(). This way, we
can use the output layer as it was intended to, and stuff like
var_dump() will write immediately to it.