[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
nit: move the private method at the end of the file ( after all public and protected methods).