Replace ObjectWrapper class with raw closures
Add ScopedDisposable
Implement Promise.start and .result
Allow nil for add/removeDisposable, remove generic
Implement Promise.whenFinished