fix($q): Promises should be Promises/A+ spec compliant

The $q promise library is not [Promise/A+](http://promisesaplus.com/) compliant.

The [spec's test-suite](https://github.com/promises-aplus/promises-spec) makes heavy use of Mocha's `done` method and would be difficult to port to jasmine. Therefore, I have added a separate karma config that runs mocha.

In addition, the spec is written for Node, and makes use of the CommonJS environment. I [forked the spec](https://github.com/promise-testing/promises-tests) and used [component](https://github.com/component/component) to make it browser friendly.