feat($location): add support for state and title in pushState

This is a continuation of #3325, re-created per my e-mail thread with @IgorMinar.

Adds $location pushState & replaceState methods acting as proxies to history
pushState & replaceState methods. This allows using pushState to change state
and title as well as URL. Note that these methods are not compatible with
browsers not supporting the HTML5 History API, e.g. IE 9.
For reference, this logic was added in https://github.com/angular/angular.js/commit/ffb2701; am I right that it affects only the hash-fallback-in-html5-mode case?

Anyway, while it was added because of oldIE, people may depend on the fact they can call `$location.url('the-same-url')` and expect nothing to happen in such a case.

Ideally I'd skip this logic only if the change originated via `$location.pushState/replaceState`, but I can't detect that from within `$browser`.