Refactored Promise

Re-factored `Promise` so it can accommodate the standard `Success` and `Fail` stages as well as the less standard numbered stages and even custom named stages.