Add when.filter.  Pass array indices and object keys

Add when.filter(promises, predicate).  Predicate can return a boolean or promise for boolean.  Close #337.

Make when.filter, when.map pass index as second param, when/keys.map pass key as second param.  Close #134.