Always return the route map

If the route set is empty, calling uniq! on it will return an empty
array, which is wrong. Instead, call uniq! and return map itself.
Enhance route matcher to match complex routes

The previous route matcher only attempted to match static segments. This
works fine for routes that begin with a static segment as it covers the
majority of defined routes (e.g. /accounts/:id would work, /foo would be
blocked). However, it doesn't block invalid nested segments (e.g.
/accounts/:id/foo) and doesn't allow routes that begin with dynamic
segments (e.g. /:foo_id/accountsA).

Now, the route mapper grabs all routes, even those that begin with
dynamic segments, and grabs full routes, not just the first segment
(e.g. /accounts/:id/foo, not just /accounts). The matcher then replaces
all dynamic segments with wildcards and ensures the full route is valid,
not just the first segment.
Bump version to 1.0.0.rc1