* Electron version: 1.4.15
* Operating system: Mac OS 10.11.6

### Desired behavior

1. Create a symlink to a file:

  ```sh
  ln  -s  the-existing-file  the-alias
  ```

2. Display the Open File dialog using a new API to preserve symlink paths:

  ```js
  electron.dialog.showOpenDialog({
    properties: ['openFile'],

    // This is a new flag. I don't know what it should be called.
    resolveAliases: false, 
  }, (selectedPaths) => {
    console.log(selectedPaths);
  })
  ```

3. Select the symlink path.

4. See that the callback is called with the symlink paths (`the-alias`).

### Actual behavior

Currently, when a symlink is selected, the callback is always called with the symlink's resolved path.

<!-- What actually happens? -->

### Notes

* The relevant OSX API: [-(NSOpenPanel *) resolvesAliases](https://developer.apple.com/reference/appkit/nsopenpanel/1533625-resolvesaliases?language=objc)
* An OSX bug that prevents the `resolvesAliases` flag from working unless the symlink is the last element of the path: http://www.openradar.me/11398659
atom/browser/ui/file_dialog.h
FILE_DIALOG_CREATE_DIRECTORY  = 1 << 3,
  FILE_DIALOG_SHOW_HIDDEN_FILES = 1 << 4,
  FILE_DIALOG_PROMPT_TO_CREATE  = 1 << 5,
};
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