Fix .fail<> generic precedence bug and missing generic on .reject()

1. `.fail<U>` overloads are in a wrong order
2.  `.reject` is defined without a generic and returns `Q.Promise<any>`