Fix for #92 - Make DataTokens and defaults readonly

The properties on TemplateRoute for DataTokens and Defaults are now
readonly. This prevents modifying these collections in a way that
invalidates cached data, or violates thread-safety.

The next change will do the same for Constraints, which is a more
substantial refactor.
I checked the legacy code, and `DataTokens` was stored as `RouteValueDictionary` there. This is important because of the behavior of RVD when a key is not present.