Remove dependence on Q and return the same type of promise that was passed in

I've wanted this module so many times.  Thanks so much for actually writing it.

I'd like to use this as part of the real-time rendering feature of regexplained.co.uk once I finish getting it to work with web-workers, but I'd rather use a more bare bones promise implementation (and I'm biased towards my own).

I also love the idea of making utilities that are promise library agnostic, so here goes.