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..
Should not have classes in package objects