Abstract iterator binding to createIterator

Long coming optimization discussed in 1525, 1561 and elsewhere.
Follows lodash's lead.
Closes #1561; add lookupIterators as appropriate

See included tests and lodash docs for some examples

LookupIterators maps string properties (see #1557) and objects to
_.matches.

As a result several of the helper functions such as _.where, _.pluck,
_.findWhere are handled by their parent implementations.
Edge case compat for findWhere, where, pluck

As discussed in PR with jdalton and @bradunbar
Tweak tests.
Merge @bradunbar's test tweaks