Typecheck `Error` and `Exception`
Summary:
Building off the previous diff, we can now typecheck the base `Exception` and `Error` types.
* In the JIT we used to assert that `Exception::$traceOpts` was typed as `mixed`, now it's an `int` (which we can trust). I haven't changed the JIT to take advantage of this, only acknowledge it.
* While I *should* change some of the constructor params, I figured it's better to leave them be and `UNSAFE_CAST` them on assignment.
Reviewed By: aorenste
Differential Revision:
D36599977
fbshipit-source-id:
26b96bad269befbc6f5852d792bb6972c88664bc