refactor: Extract `Handler` from `Middleware`

Expose the `Handler` object to allow for custom route processing.
Merge pull request #30 from shane-tomlinson/extract-handler

refactor: Extract `Handler` from `Middleware`