Self-contained file selection

Heavily refactored the file picker. It now controls its own window and
fileString and is called with "Select" and "Cancel" functions to
indicate what it should do when it is complete or canceled.
Because of this, a lot of the FileMenu GUI code could be removed.