Fix and optimize Q.all

[1] Make `Q.all` work with sparse arrays.
[2] Remove the overprotective .fail() call.

Without [1], Q.all will never resolve if a sparse array is passed.

I think `promises[index] = value;` can be considered safe, and [2] as well.