[WIP] Add app.subroute option for method chaining middleware for routes, as well as automatic OPTIONS responses and 405 Method Not Allowed error codes

    app.subroute('/foo')
      .use(allMiddleware)
      .get(getMiddleware)
      .post(postMiddleware)
      .all(allMiddleware2)
      .end()

Will be equivalent to:

    app.all('/foo', allMiddleware)
    app.get('/foo', getMiddleware)
    app.post('/foo', postMiddleware)
    app.all('/foo', allMiddleware2)
    app.options('/foo', function(req, res, next){
      res.setHeader('Allow', 'GET,HEAD,POST,OPTIONS')
      res.end()
    })
    app.all('/foo', function(req, res, next){
      var err = new Error()
      err.status = 405
      next(err)
    })

`.end()` adds the `app.options()` and the last `app.all()` middleware and is completely optional.
There is also a `app.subroute().allow()` and `disallow()` method to add/remove methods from `app.subroute().options()`.

This kind of implements @guille's #1501 alternative route syntax.
This also alleviates #1499 405 Method Not Allowed routing.

There are, however, issues with this code. If you're interested in merging this, I can work on it more, otherwise I'm not.

- If a response is sent via `app.subroute().all`, that method will not be added to `OPTIONS` since express doesn't know what method was used. 
- I was under the impression that `app.get` accepted `HEAD` requests but doesn't send a body as per HTTP spec, but I guess that isn't the case in express (I have a test commented out). Not sure how to handle it.
- All routes have to be declared in the same `app.subroute()` for `OPTIONS` to work. 

Also `routes` for `app.subroute(routes)` can be an array, though I'm not sure if you'd want that.
I added that because in my case, I have a lot of similar routes.

Then there's less important issues like I don't know where to put stuff, and coding styles.

Let me know what you think.