NodeFile Edge Generation with PKey mapping

Implemented a potential performance boost that kicks in when a
non-linking file has a foreign key that maps directly to a file's
primary key, and fixed a bug in the nearby code that would have created
extra edges for every keypair in the Foreign Key.
Also added better documentation for the speed differences of the two
methods.
FilePicker Keyboard Nav Improvements

The file viewer now scrolls on selection change.
Selection will not jump to the last index if you press down from the
last row, nor will it jump to the first index if you press up in the
first row.
Moved the view out into the middle of the screen, where it looks much
better. It still needs to be made into a true modal dialog.
Window

Implemented the Window class, which provides a way of encapsulating GUI
functions in a draggable box. Unlike the Unity version, the value
returned by the function inside the Window will be passed through,
allowing for minimal changes to other code.

Also implemented functions for finding the left and right side of the
open screen in MenuController, similar to top and bottom.
Heightmap border fix

Fixed an issue where the heightmap would not correctly overwrite the
heights of points at the very edge of the map.
Workspace Refactor 2

More work on serialization: Added the Workspace State concept which will
allow for serialization of any static variables, added DataFile
serialization (important!) and made DataFile.attributes private.

Also, Gridlines in graphing now default to off, because they cause a
significant reduction in frame rate when enabled. Need to come up with a
real fix for this.