add isPromise and isGenerator

They are everywhere now. Depends on the choice of dependency, one might be forced to face both at one.
Note: `throw` is a reserved word in ES3. You'd need to do `obj["throw"]`