basically same idea as hiccup's existing html5 function, but includes
some conditional html designed to work in conjunction with some of the
clojurescript utility functions to detect whether an old IE version
is in use, or lack of websockets support, etc.
'validate' functions now add params to the request under
:validation-errors when validations fail. if the fail-response used
is a function, the request that gets passed in is the last request
map that was used in the most recent validation instead of the original
mainly done for code readability. nicer to alias the namespace
separately and be able to write code like
(session/assoc :foo "bar")
instead of
(response/session-assoc :foo "bar")
but clearly a minor cosmetic change regardless
this fixes problems where middleware could be run even if the wrapped
routes did not match the request (depended on scoping, e.g. nesting
in a context could limit this, but was not perfect).