Add lazy minimal promise.  Promises/A+ interoperable, but not fully compliant
Streamline then, add tests for catch, add flatten (monadic join)