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

Refactor to make $q Promises A+ v1.1 compilant
The other option is that the `resolve` and `reject` exposed at `Deferred` to be also wrapped in `callOnce`, but that will make the construction of a defer slower