Accept iterables for getIn, updateIn family.

getIn and updateIn have been re-written in terms of iteration, allowing them to accept not only arrays as key paths, but any iterable source, including List.

It also makes a subtle change to the behavior of updateIn with respect to the `notSetValue`. Previously, the identity function for updateIn could result in a
modification if `notSetValue` was provided. This made the value `undefined` special which can be ambiguous if `undefined` is intended as a proper value. These
two behaviors are undesired, so the new behavior is to compare the return of the `updater` function to the provided argument. This means identity function
will **always** result in no change, and `undefined` is only as special as any other value.