future: Make promising take Promise[A] => B.

By creating a temporary Promising object we don't break source
compatibility to previous promising.

Come on Scala, gimme some type param groups so this boilerplate can
die..