fix($q): pass promise-aplus-tests v2.0.3 WIP

This is still a work in progress, but this implementation is now passing the
full promises-aplus-tests v2.0.3.

It is still necessary to shrink this down and hopefully provide a better
flyweight/prototype-based implementation.

Fixes #5223