Make isPromise accept any promise-like object

Also remove dependency on origin Q library.