Object.keys() is more permissive in ES6, but keep Promise.props() strict.

The latest version of es6-shim implements the more permissive ES6 semantics
for Object.keys().
Rename `Promise.fromGenerator` to `Promise.async`.

This matches the name in the `q` package, and is much shorter to type.
Make `Promise.method` behave like `Q.promised`.

In particular, we make sure to unwrap the `this` parameter if it is a
`Promise`.