Make `get`, `post`, ... methods optional. Check whether these method
exist at comptime. When no corresponding method is provided,
the handler simply return immediately.
Since it uses comptime, hopefully it should not add any checks at
runtime.
zap.Endpont.Listener and zap.App now support on_error callbacks:
zap.Endpont.Listener.Settings contains an `on_error` optional callback
field.
zap.App supports those two callbacks:
/// ```zig
/// const MyContext = struct {
/// // You may (optionally) define the following global handlers:
/// pub fn unhandledRequest(_: *MyContext, _: Allocator, _: Request) anyerror!void {}
/// pub fn unhandledError(_: *MyContext, _: Request, _: anyerror) void {}
/// };
/// ```
The `endpoint` example has been updated to showcase `on_error`, and the
new example `app_errors` showcases `Context.unhandledError`.