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.
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
docs($state): Documented new params configuration:

  - value, squash, type
docs($state): improved docs for $state.state
docs($state): update to ngdocs 0.2.6.  Add parameter property table for stateConfig.
docs(site): made docs .fluid and wide
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