function iterable(value) {
  if (typeof Symbol !== 'undefined') {
    return !!value[Symbol.iterator];
  } else {
    return Array.isArray(value) || typeof value === 'string';
  }
}
If ES6 features are available, returns `true` if the value implements the
`Symbol.iterator` method. If not, it's a string or Array.

Could potentially cause issues if a browser exists that has Set and Map but
not Symbol.

@param { any } value
@returns { boolean }