Register paths that start with a / as the default handler.

For consistency remove the setDefaultHandler() method.
Modify the parser to better handle UTF8 paths
If parsing fails attempt to send a bad request response
Add configurable limits to prevent hash collision attacks
Handle encoding correctly in the parser

The parser now correctly decodes all characters, including
multi byte unicode.
Use treemap