ctx.request.href: get full request url, include `protocol`, `host` and `url`

Useful on those scenes need current full request url, like `OAuth`.
> what are the weird paths clients can send?

The HTTP spec itself says a valid URL (specifically https://tools.ietf.org/html/rfc3986#section-4.3 or `1*( "/" segment )`) or the character `*`. This means there is no requirement that the scheme need be `/https?/` in the specs.

> are protocol-less URLs valid here?

No, only absolute with the scheme or path-only.

> what about that weird can we handled with a one-off @?

Not sure what this means, lol.

> btw, i can't fucking read https://github.com/strongloop/express/blob/master/lib/router/index.js#L127 lol

Yea... lol. That's supposed to be refactored in `router` module, but I haven't checked it in yet.