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

fixes #1488

chore(lint): linted
fix($urlMatcherFactory): allow arrays in both path and query params

- Connected Type.$$array with options.$$array.
- Add $$array: true where values are always mapped to arrays (even if only one value found)
- If a query param ends with [], it is considered $$array=true, else $$array='auto'
- Encode array path-parameters using dashes

closes #1073
closes #1045
closes #1486
closes #1394

chore(lint): linted
fix($state): reload() now reinvokes controllers

- change reload() to use notify: true

fixes #582