feat($urlUtils): make public, add resolve callback

The resolve callback allows the application code to modify the
resolved URL before it is normailzed by urlParsingNode.href for example:

var parsed = $urlUtils.resolve("foo", function(urlUtils) {
  urlUtils.protocol =
    urlUtils.protocol === 'https:' ? 'wss:' : 'ws:';
});
parsed.href // wss://localhost/foo

The resolved URL object now includes the aditional properties hostname,
port, pathname, hash and search.

Closes #3299
1.1.6-ts