per-request exception safety and servererror route
**Is your feature request related to a problem? Please describe.** 🤔
Sometimes, when processing a user request, exceptions may occur on the server. Any exception will kill the entire server, it's very unreliable.

I tried to wrap all routes in
```nim
try:
  ##
except:
  req.answer(
    staticRead("html/server-error.html"),
    headers = newHttpHeaders([("Content-Type", "text/html; charset=utf-8")])
  )
```
but even with this, when i tried to connect to my server with bad internet connection, i got
```
Error: unhandled exception: Connection timed out
```
on server. And server was down.
(it's probably a bug, but it related to idea)

**Describe the solution you'd like** 💡
* Wrap each request inside try/except, log all errors, do not stop server if single request failed.
* Add an `servererror` hook to customize error, that should be sent to client if error occurred. (If this fail, stop server or ignore request, probably should be and option here)
