a JS Array extension class which adds asynchronous functions to Array as well as firing events on 'remove', 'add' or 'change'