errorhandler should expect exception classes instead of exception instances 

the [current master](https://github.com/mitsuhiko/flask/blob/6fcc2ae3f4536e4d2651c1a00abe2306212a5bfd/flask/app.py#L1136) says:

```python
def _register_error_handler(self, key, code_or_exception, f):
    if isinstance(code_or_exception, HTTPException):
        ...
```

this will only work if you register a exception *instance*, not an exception class, which is definitely not what users expect. instead of:

---
```python
from werkzeug.exceptions import Forbidden
@errorhandler(Forbidden)
def forbidden(e):
    ...
```
---
```python
from werkzeug.exceptions import Forbidden
raise Forbidden()
```
---

you’d have to do

---
```python
from werkzeug.exceptions import Forbidden
forbidden_instance = Forbidden()
@errorhandler(forbidden_instance)
def forbidden(e):
    ...
```
---
```python
from ..exceptions import forbidden_instance
raise forbidden_instance
```
---

i think you meant `issubclass(code_or_exception, HTTPException)`, but to preserve backwards compatibility, we should change it to accept both