Implement explicit API for creating a router and adding routes.

Add a `NewRouter` function to the router package to explicitly create a
new router.  The functions `AddRoute` and `AddRoutes` are added in order
to explicitly add routes to the router.  The `AddRoute` function also
check that the route is unique during that phase, and report an error if
it's not the case.

The tests and the example are updated to reflect that change.