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

Refactor to make $q Promises A+ v1.1 compilant
it can change if during a promise resolution more callbacks are registered. One example is the test
`'should not break if a callbacks registers another callback'` from qSpec