Refactor WMF server code to be more "go like"

The following refactoring brings the server into more "go like" stance. It rebuilds the code to be more procedural rather than pseudo-class based. There is still some additional work to be done (more unit tests, probably a few more interface definitions), but those can be added later.

@crankycoder , I owe you an adult beverage of your choice in Dec after you r? this.


Not sure if we want to bother changing this to "ErrOAuth", but I don't think we have a big precedent for "OAuth" in this repo (apart from a few comments, according to GitHub search).

Or I guess if I wasn't going to half-ass it, here's a grep:
```sh
$ grep -irIn "oauth" . --exclude-dir="src" --exclude-dir="node_modules" --exclude-dir="Godeps" --exclude-dir="env" --exclude-dir=".git" | grep -v "static/npm-shrinkwrap.json" | grep -v "OAuth"
```

./wmf/handlers.go:414:			`return "", "", ErrOauth`
./wmf/handlers.go:448:				`return "", "", ErrOauth`
./wmf/handlers.go:454:				`return "", "", ErrOauth`
./wmf/handlers.go:460:				`return "", "", ErrOauth`
./wmf/handlers.go:464:				`return "", "", ErrOauth`
./wmf/handlers.go:549:	`// because oauth may not always be present.`
./wmf/handlers.go:901:	`token_url := self.config.Get("fxa.token", OAUTH_ENDPOINT+"/v1/token")`
./wmf/handlers.go:914:		`self.logger.Error(self.logCat, "Could not get oauth token",`
./wmf/handlers.go:916:		`return "", ErrOauth`
./wmf/handlers.go:931:		`return "", ErrOauth`
./wmf/handlers.go:937:		`return "", ErrOauth`
./wmf/handlers.go:2031:	`self.logCat = "oauth"`

(Here's the full, unfiltered output)
```sh
$ grep -irIn "oauth" . --exclude-dir="src" --exclude-dir="node_modules" --exclude-dir="Godeps" --exclude-dir="env" --exclude-dir=".git" | grep -v "static/npm-shrinkwrap.json" | grep -v "OAuth"
./config-sample.ini:65:#fxa.login=https://oauth.accounts.firefox.com/v1
./config-sample.ini:78:#fxa.redir_uri=/oauth
./config-travis.ini:18:fxa.token=https://oauth-stable.dev.lcip.org/v1/token
./config-travis.ini:20:fxa.login=https://oauth-stable.dev.lcip.org/v1/authorization
./config-travis.ini:21:fxa.redir_uri=/oauth
./config.ini:38:#oauth.endpoint=https://oauth.accounts.firefox.com/v1
./config.ini:40:#oauth.login=https://oauth.accounts.firefox.com/v1
./config.ini:42:#oauth.redir_uri=/authr
./config.ini:44:#oauth.client_id=
./config.ini:46:#oauth.client_secret
./main.go:252:	auth := config.Get("fxa.redir_uri", "/oauth/")
./wmf/handlers.go:52:	OAUTH_ENDPOINT    = "https://oauth.accounts.firefox.com"
./wmf/handlers.go:345:		"https://oauth.accounts.firefox.com/authorization")
./wmf/handlers.go:367:			"https://oauth.accounts.firefox.com/v1")
./wmf/handlers.go:414:			return "", "", ErrOauth
./wmf/handlers.go:448:				return "", "", ErrOauth
./wmf/handlers.go:454:				return "", "", ErrOauth
./wmf/handlers.go:460:				return "", "", ErrOauth
./wmf/handlers.go:464:				return "", "", ErrOauth
./wmf/handlers.go:549:	// because oauth may not always be present.
./wmf/handlers.go:901:	token_url := self.config.Get("fxa.token", OAUTH_ENDPOINT+"/v1/token")
./wmf/handlers.go:914:		self.logger.Error(self.logCat, "Could not get oauth token",
./wmf/handlers.go:916:		return "", ErrOauth
./wmf/handlers.go:931:		return "", ErrOauth
./wmf/handlers.go:937:		return "", ErrOauth
./wmf/handlers.go:2031:	self.logCat = "oauth"
./wmf/hawk.go:21:var ErrNoAuth = errors.New("No Authorization Header")
./wmf/hawk.go:199:		return ErrNoAuth
```