Simplify setvalue/setexception: Use `with self._lock`
Simplify unit: onsuccess/onfailure -> map
Simplify proxyto: Chain return
Add eval
Fix foreach: Should return self, like onsuccess
Fix test_updateifempty: Future.updateifempty -> Promise.updateifempty
Simplify onsuccess: Promise.call -> self.respond
Simplify onfailure: Promise.call -> self.respond
Simplify ensure: Promise.call -> self.respond
Add transform
Simplify flatmap: Promise.call -> self.transform
Simplify rescue: Promise.call -> self.transform
Simplify handle: Promise.call -> self.rescue
Simplify map: Promise.call -> self.flatmap
Simplify filter: Promise.call -> self.flatmap
Simplify or_: Promise.call -> Promise.select
respond: Don't Promise.call + die on uncaught exceptions