- major code refactor
created tree.clj - holds the route tree creation code
created matcher.clj - holds the route matching code
created dispatcher.clj - holds the handler dispatching code
created handlers.clj - holds default resource, file and 404 handlers

- core.clj
redefined paths' public interface
changed crappy dual methods with awesome multimethods
added functions that wrap required middlewares

- middleware.clj
fixed wrap-route-params! gah, how was this out there if it was not working?!

- changed the way how the 404 handler is defined
in the routes definition instead of passing it around
- minor refactor
changed matcher/match's params order to be consistent

- preparing testing
outline what to test