Run gofmt on all code
Use idiomatic type reflection for error checking

Also fixes the problem that WebError is not an error, but *WebError is.
Handlers that return an error, return a *WebError, meaning that the
stringly typed version of this error checking did not actually catch
errors in the Go sense.
Use local Context type where possible for Writing

Prevent bypassing the wrapper around Context.ResponseWriter.Write() by
not calling that method directly from within web.go.

This is related to cb6938f where postmodules are run after data has been
sent over the wire. By always using Context.Write for writing data, this
can be prevented.
(minor) Fix function documentation (s/scgi/fcgi)
Allow setting server-wide state

Communicate with handlers without globals through the User member of a
Server object. Passed to every handler in Context.User.
Field names in struct literal for legibility
Merge branch 'master' into HEAD
Merge remote-tracking branch 'xyproto/master'

Conflicts:
	web.go
	web_test.go

Resolved conflicts, which were mostly whitespace anyway
Remove syntax bork introduced by previous merge
route based on request PATH, not URI

URI includes the query string dont want that in my routing
Check for error on writing of result
Unify signature of handlers internally

All handlers eventually conform to the following signature:

func (ctx *web.Context, arg1 string, arg2 string, ...) error

handlers passed in from outside are allowed to have the following
variations:

- they may omit the initial *web.Context argument
- they may have as their first return value a string or []byte which
  will be sent back to the client
- they may omit the error return value

All these variations are consoled by wrapping the passed function until
it conforms to the internal signature. This makes invoking the handler
easier.
Organize: all handler wrapping code in handlerf.go
organize: cookie related code to cookie.go
simplify internal API by removing one indirection
Simplify type defs: use http.ResponseWriter
Display text from "nice" errors to client
Reuse special purpose funcs where possible
Simplify regular expression management

discard uncompiled regexp after compilation and rename struct field for
clarity
Accept classic http.Handler as internal handlers