docs(guide/$location) global cntl deprecated

Closes #8255
docs(guide/$location): fix up example protractor tests

Closes #8255
docs($interpolate): fix example

Closes #8276
docs(guide/directive): fix formatting
chore(e2e): protractor version bump to 1.0
refactor(Angular): add isPromiseLike helper function

This can be used internally to remove the repeating pattern of `obj && obj.then`. For now, I don't see a good reason to expose this in angular's public interface.
docs(guide): remove redundancy in providers guide

Highlighted the Best Practices section, and took the styling from the Services doc.
Also removed some superfluous wording that was in the "Provider Recipe"
docs(tutorial): remove index.html from app url
docs(guide/concepts): update example

The "A first example: Data binding" section it implies that the `required` directive is
doing something, but it isn't.

I just removed the parts the refer to the required directive to avoid confusion.
fix(ngHref): remove attribute when empty value instead of ignoring

Closes #2755
feat($q): add streamlined ES6-style interface for using $q

This potentially helps lead the way towards a more performant fly-weight implementation, as discussed
earlier in the year. Using a constructor means we can put things in the prototype chain, and essentially
treat $q as a Promise class, and reuse methods as appropriate.

Short of that, I feel this style is slightly more convenient and streamlined, compared with the older
API.
WIP make Q more bloobirdy
WIP subset of Bluebird functionality / implementation

Things remaining:

1. Make this compatible with the original $q implementation

2. Sort out the error logging story (make use of Bluebird's machinery for this + $exceptionHandler by default)

3. Remove more bits that aren't needed for Angular.
WIP bluebird
WIP add promises-aplus-test-adapter-prefix.js
MORE WIP
WIP fix $compile tests