[Fixes #90] RouteTemplate does not take RouteData

Changed the implementation of route template to merge the existing route data
with the values obtained from parsing the request path with the given template.

Restored original route data values in case the route template data does not match.

This also takes care of #16 for some scenarios
> ? It is a value local to RouteAsync that only gets returned if the route matches (in which case it should be returned).

Yeah I think you're right. Ok