Added support for promises to req.login().

I tried using [promise](https://github.com/then/promise), but I couldn't get it working; the callbacks were being called fine, but for some reason it wasn't modifying the req variable. I used Q instead; it's bigger, but not so much bigger that it will make much of a difference on the server.

I can have another go with promise if you want.