Add two specs for double slash handling

The first checks that we aren't confusing the behaviour of the Router and
our test backends, both of which are written in Go. The default behaviour of
`ServeMux` is to issue a redirect to the canonicalised path.

The second checks that `/foo//bar` is routed the same as `/foo/bar` and
doesn't fall through to the root prefix.

Both presently fail.
Don't use DefaultServeMux for simple_backend

By passing our own simple handler we cut out `DefaultServeMux`, whose
default behaviour is to issue a redirect if the request path isn't in it's
canonical form:
```
func (mux *ServeMux) Handler(r *Request) (h Handler, pattern string) {
  if r.Method != "CONNECT" {
    if p := cleanPath(r.URL.Path); p != r.URL.Path {
      _, pattern = mux.handler(r.Host, p)
      return RedirectHandler(p, StatusMovedPermanently), pattern
```

We don't want this because it risks confusing the behaviour of the Router
and the test backend. The backend should be dumb and serve up an identifier
regardless.
Don't use DefaultServeMux for echo_backend

For the same reasons as `simple_backend` in the preceding commit.
Use echo_backend for "double slashes" spec

We need to ensure not only that the request is routed to the correct
backend, but also that the request URI isn't passed as-is to that backend.

So change the inner backend to `:type => :echo` and verify the `RequestURI`
in the response.
Collapse multiple slashes during lookup

Convert multiple adjecent slashes to a single slash for the purposes of
looking up routes. The request URI will be passed to the backend unmodified.

This maintains the behaviour of removing leading slashes. However empty
items produced by trailing slashes are now also removed.

Lookup performance is slightly decreased. Mostly when the path contains lots
and lots of slashes.

Before:
```
BenchmarkLookup  2000000               782 ns/op
BenchmarkLookupBogus     1000000              1213 ns/op
BenchmarkLookupMalicious          100000             19011 ns/op
ok      github.com/alphagov/router/triemux      6.057s
```

After:
```
BenchmarkLookup  2000000               927 ns/op
BenchmarkLookupBogus     1000000              1461 ns/op
BenchmarkLookupMalicious           50000             32835 ns/op
ok      github.com/alphagov/router/triemux      6.481s
```
Merge pull request #45 from alphagov/58795274-double_slashes

[Fixes #58795274] Collapse multiple slashes during lookup