fix($urlMatcherFactory): no longer generate unroutable urls

Previously, urlMatcherFactory would squash default param values and any double slashes from generated urls (by default).  This behaviour caused urls generated with default values in them to not route back to the state that generated them.  Change the default behaviour to squash only the param-value and not the URLs.

Closes #1487

feat($urlMatcherFactory): configurable url param squashing

Allow configuration of the squashing behavior of default-url-parameters on a per-param basis with reasonable default setting.
docs($state): Documented new params configuration:

  - value, squash, type
- fix defaultSquashPolicy with new policy options.
fix($urlMatcherFactory): typed params in search

- Improved code structure for default parameter Type
- Added and Search-Query type supporting arrays of typed params in the query-string
- Consolidated path/query param codepath in UrlMatcher.format
- Allow squashing default query params.
- Cleaned up built-in param Types
- Add toString to Type and Param
- Add `name` to Type when registered
- Fix typo in ParamSet.$$equals Closes #1488