Allow general monadic handlers.

I.e. accept (Monad m) => Request -> m Response.
Add trivial example.
Remove the requirement of Show for predicates.

Also rename 'expandRoutes' to 'expand' and 'renderErrorWith' to
'renderer'.

Finally add 'true = Const ()' to allow easy declaration of routes which
do not restrict their handlers and have thus no meaningful meta-data to
hand over.
Rename 'Request' to 'Req'.

As it is only used internally and in other predicate implementations,
but usually not in client code, it is better to not have a name conflict
with 'Network.Wai.Request', which clients are more likely to use.