fix($location): support alternative means of setting application base path

In HTML, the <base> tag is used to configure how relative hyperlinks are resolved. In Angular, it
has another use, configuring how URLs are rewritten. Because of this, setting the base URL to some
external path outside of the application would cause $location.$$parse() to throw (which is the
desired behaviour).

This change enables developers to imperatively configure the application basePath, taking advantage
of the natural HTML use of the <base> tag without breaking Angular applications.

Example:

```
angular.module("test", [])
  .config(function($locationProvider) {
    $locationProvider.baseHref("http://foo.com/the/base/application/path/");
  });
```

Closes #4442