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.