Use Martini for routing

This allows us to more easily build abstractions and use HTTP verbs when
routing. It's also fully compatible with http.HandlerFunc etc. so we
lose nothing in flexibility and interfaces.
Listen on `apiAddr`

This is the first part of creating a write API.
Add write API

A PUT to /url?url=http%3A%2F%2Ftest.com adds a new link of
'http://test.com' to the whitelist.

There's some basic validation on whether the URL is well-formed and is
absolute also.
Change all cases of `url` to `URL`

Be consistent with the Go style guide.
Make the API listen on specified port

This borrows the pattern from alphagov/router wholesale.
Save external URLs in the current request

This allows us to bubble up error handling to the calling request
handler and also remove the sleep from the tests.
Vendorise Martini and dependencies
Merge remote-tracking branch 'origin/write-api'