Add HTTP router

Motivation:

See #3023.

Basic idea:
* Route based on only HTTP method and request path info
  (path info is the part before "?": /pathInfo?name1=value1&name2=value2).
* Not based on: base URL (virtual host like),
  header (domain name, content type etc.),
  params in request query, params in request body etc.
  Programs/web frameworks may add filters, utility methods etc.
  by themselves to route based on these info.
* Helpers to extract path params (embedded in path info) and query params.
  No helpers to extract params in request body.

Both routing and reverse routing are supported:
* Route: method + path info -> target
* Reverse routing: target + path params (+ optional query params) -> path info (+ query)

Modifications:

Add 2 packages:
1. io.netty.handler.codec.http.routing: Generic routing, not specific to Netty.
2. io.netty.handler.codec.http.router: Specific to Netty inbound handler architecture.

The reason for adding 2 packages, not 1 package, is for flexibility.

Basically there are 2 styles to add/design HTTP routing, depends on the specific
program/web framework:
1. Targets are Netty handlers: The router hander will add
   (and later remove if necessary) the routed target hander to pipeline.
   Netty will automatically invoke the target handler.
2. Targets are not Netty handlers: The router handler doesn't add more handlers
   to pipeline. The router handler will invoke targets by itself.

For example, in Sinetja web framework, to support Java 8 lambda syntax, target
is designed as functional interface like this:
https://github.com/sinetja/sinetja/blob/master/src/main/java/sinetja/Action.java

Separating into 2 packages lets Netty users choose what to use more easily.
Sinetja uses the 2nd style (uses both packages), while other programs/frameworks
may want to use the 1st style (use only io.netty.handler.codec.http.router).

See Javadoc in these packages for more info.

Implementation note:
The class declarations are a little messy because of this
method chaining & inheritance problem:
http://stackoverflow.com/questions/1069528
http://stackoverflow.com/questions/9655335

Ex:
class Router<M, T, RouterLike extends Router<M, T, RouterLike>>

Result:

Projects like RxNetty, Xitrum, Sinetja etc. can now use the router in Netty.