new-pr-5

Here's my refactoring. I'm sure I broke the Windows side. The three things I attempted to do: 1) decouple modules (like fileIcons and contextMenus) from controller, 2) Combine overlapping methods for Mac and Windows, and 3) Use flexJSON to serialize/deserialize. We can discuss the structure more in detail tomorrow.