fix purgeHotkeys to delete all

purgeHotkeys would previously miss the tail end of the array, because it was using a forward loop (angular.forEach), and the index was decrementing with each delete.