* Electron version: 1.6.2
* Operating system: macOS 10.12.3

### Actual behavior
I faced with strange behaviour of `<input type='file' />` in Electron.
You can select special Macs' folders - app folders (for example `/Applications/Calculator.app`).
In Finder it looks like file, but it's directory!

### Expected behavior
There are two possible ways.

1. `Chrome`way (and Safari). In real Chrome you can select `Calculator.app` from `<input type='file' />`. But Chrome transparently created `Calculator.app.zip` and attached this archive to input.
2. `Firefox` way. In Firefox you can not select any folders from `<input type='file' />`

### How to reproduce
I have created simple fiddle for that https://jsfiddle.net/s7c7k33b/ for testing in different browsers and Electron
atom/browser/ui/file_dialog.h
FILE_DIALOG_SHOW_HIDDEN_FILES  = 1 << 4,
  FILE_DIALOG_PROMPT_TO_CREATE   = 1 << 5,
  FILE_DIALOG_NO_RESOLVE_ALIASES = 1 << 6,
};
typedef base::Callback<void(
    bool result, const std::vector<base::FilePath>& paths)> OpenDialogCallback;
typedef base::Callback<void(
    bool result, const base::FilePath& path)> SaveDialogCallback;
struct DialogSettings {
  atom::NativeWindow* parent_window = nullptr;
  std::string title;
  std::string message;
  std::string button_label;
  std::string name_field_label;
  base::FilePath default_path;
  Filters filters;
  int properties = 0;
  bool shows_tag_field = true;
};
bool ShowOpenDialog(const DialogSettings& settings,
                    std::vector<base::FilePath>* paths);
void ShowOpenDialog(const DialogSettings& settings,
                    const OpenDialogCallback& callback);
bool ShowSaveDialog(const DialogSettings& settings,
                    base::FilePath* path);
void ShowSaveDialog(const DialogSettings& settings,
                    const SaveDialogCallback& callback);
}  
#endif