fix($urlMatcherFactory): Pre-replace certain param values for better mapping

- Some parameter values can generate a non-bidirectional URL.  For example,
  $state.go('foo', { param: null }) can map to the url "/foo/", but that
  url would match as ('foo', {param: ""}).  Allow certain special values to
  be pre-replaced in Param.value() to support better support bi-directional
  URL mapping.
- Switch squash policy to true/false instead of "squash"/"nosquash"
- Allow squash policy to be an arbitrary string, used as a placeholder
  in the url (this uses the pre-replace feature to map that string to undefined)
fix(ui-router): re-add IE8 compatibility for map/filter/keys

- I'm not guaranteeing IE8 compatibility, but I did replace the obvious [].map/filter {}.keys calls with underscore-like replacements.
- 0.2.x intends to retain compatibility with angular 1.2.x and, if reasonable, IE8.
- 1.0.0+ will drop support for 1.2.x and IE8.

fixes #1518
fixes #1383