Allow error callbacks to override response status

Instead of always returning an HTTP 500 response status, allow error callbacks to return an object with `status` and `bodyData` properties. Example:

```
    'My\\App\\InvalidSessionException' => function ($e) {
        return (object)[
            'status' => 403,
            'bodyData' => 'GO AWAY!'
        ];
    }
```