Add Promise::wait() and Promise::waitFor() methods
Major refactor, more after the jump

- Deferred -> Future
- DeferredReadOnly -> PrivateFuture
- Remove Promise::waitFor($timeout) functionality
- Merge progress support into watcher resolution callbacks
- Promise interface reduced to Promise::watch($cb) and Promise::wait()
Fix varname typo
Fully migrate things to composer