Clean sub-router mounts

This change adds support for wildcard patterns that connect the slashes of a sub-router.

For example.. the current behaviour:
```go
m := web.New()
m.Get("/", indexHandler)

users := web.New()
users.Use(middleware.SubRouter)
m.Handle("/users/*", users)
users.Get("/", listUsersHandler)
users.Post("/", createUserHandler)
users.Get("/:userId", getUserHandler)
```
getting a list of users, or creating a new user, the client would have to specifically request:
GET /users/
POST /users/
A GET to /users or POST to /users will result in a 404.... which is certainly not the conventional or expected behaviour of an API. 

in order to support both `/users/` and `/users`, you have to individually add those routes as so:
```go
m.Get("/users", listUsersHandler) // these should not be necessary.... 
m.Post("/users", createUserHandler) // these should not be necessary.... 
```

.. and as a I add more and more groups of handlers (sub-routers), its polluting my code.

This PR, allows both cases to work, depending if the wildcard route provided is `/*` or `*`. As so:

```go
m := web.New()
m.Get("/", indexHandler)

users := web.New()
users.Use(middleware.SubRouter)
m.Handle("/users*", users)
users.Get("/", listUsersHandler)
users.Post("/", createUserHandler)
users.Get("/:userId", getUserHandler)
```

Also, this change is fully backwards compatible with the previous functionality. For a full example, see: https://gist.github.com/pkieltyka/3afcfd34bd45f29fe372