Remove a inconsistent test from the Future specs

I don't know what it was trying to test, I think it was a partial copy/paste thing that just got left in some time in the distant past.
Change Future.all and .first to accept an array as first argument
Fix Future.reduce to return the initial value when there are no futures
Make Future.all, .first, .traverse and .reduce accept Enumerables

.reduce converts the Enumerable to an Array, the other only use #each.