Accept -O4 and larger values, clamping to 3 and warning

GCC and clang accept huge -O* values like -O4 and -O20, silently
clamping them to a sensible -O3. Some packages rely on this and
specify -O20 as a default "REALLY FAST", such as libogg and libvorbis.

For compatibility, accept the large values, clamp them to 3, and
print a warning instead of throwing and exception and dying.

Fixes https://github.com/kripken/emscripten/issues/1499
Fixes https://github.com/kripken/emscripten/issues/264
this will no longer catch exceptions on the first line after the try, was that intentional?