Make the assignBrowse implementation cleaner.

This replaces the hack which overlays an invisible file input over the browse node with a cleaner implementation which uses addEventListener() and click() to pass click events along to the file input.

I have verified that this works in at least Firefox, Chrome and IE 10, which are the browsers which support the HTML5 file API anyway (see [this](http://caniuse.com/#feat=fileapi)), so this change doesn't reduce browser support.