Respect error_reporting and support error suppression using @-operator.

Without respecting error_reporting() there is no way to ignore errors (including warnings and notices) being caught by the handler. By checking if the error level is enabled by the current error_reporting level, we can chose what errors to ignore.

Some libraries depend on the @-operator and the change suggested here will make error-suppression using the @-operator work nicely since that will set error_reporting = 0.