refactor($q): make $q Promises A+ v1.1 compilant

Refactor to make $q Promises A+ v1.1 compilant
This is the same thing that other implementation do e.g.
https://github.com/petkaantonov/bluebird/blob/master/src/thenables.js#L61