Adds .fail support to AbstractLoader

Adds .fail support as well as allows the ability to pass in `complete:` to make the old world (non-promise) feature complete.