Parametize failure and read listeners in main lock in PromiseImpl
Change promise constructor
Add javadoc and more implementations.