First cut at core.match-based dispatcher

io.aviso.rook.dispatcher/compile-dispatch-table compiles dispatch tables
to Clojure functions that dispatch directly to the handler function
wrapped in the specified middleware/pipeline.

A dispatch table is a vector of vectors of the following shape:

  [[method pathvec verb-fn pipeline
    [method' pathvec' verb-fn' pipeline' ...]
    ...]
   ...]

where a pathvec is a vector of strings representing literal path
segments and/or keywords representing path segments to be bound to route
parameters named by the keywords.
First cut at namespace-dispatch-table

Dispatch tables can now include "context entries" distinguished by the
omission of the method keyword. The pathvec of such entries serves as
the context-pathvec for the nested entries. Providing a pipeline is
optional; if present, it will be used as the default pipeline for the
nested entries.

Regular entries can now omit the pipeline field or specify nil to use
the default pipeline inherited from the context.
First cut at dispatcher-spec
Tweak compile-dispatch-table's docstring
Only require namespace if not found in namespace-dispatch-table
Remove define-dispatch-table
Tweak terminology -- pipeline becomes middleware
Add support for :apply-middleware-fn in compile-dispatch-table
Return [] when preparsing requests to "/"
Change rook.async alias in dispatcher
Handle ns metadata and :arg-resolvers in compile-dispatch-table
Remove implicit context-pathvec prefix from namespace-dispatch-table
Have fred use FQ symbol in :arg-resolvers
More comprehensive dispatcher spec
Fix some typos
Support :schema in compile-dispatch-table

Also includes a tweak to argument extraction in the non-route-param
case.
Test for 500 response on sync handler exception

Exception handling courtesy of rook.async's wrap-restful-format.
Test schema validation with rook.dispatcher
Fix a typo
Add TODO re: eval of ns arg resolvers