code: function isHidden(option) {
    return option.hidden === true ||
           (option.value != null && option.value.hidden);
  }
docs: Checking that an option is hidden involves messing in properties on the
  value right now (which isn't a good idea really) we really should be marking
  that on the option, so this encapsulates the problem