Un-spaghetti the Main Controller and Window Controller

What this does
---
 - The Main Controller, Test Run Controller, and Window Controller were is a total state of disarray. 
 - The Main controller controlled everything. Projects, project selector, everything.
 - Upon changing anything, including the start and finish of syncing, the main controller would either call delegate methods, send notification, or a combination of both.
 - This is obviously TERRIBLE.
 - This PR attempts to solve this. The window controller now handles all syncing finished, project selectors, project creator/editor, preference windows, and authentication windows.

The top of the image below, is what it is now... the bottom is the what it was...
![Spaghettied Controller Mess](https://dl.dropboxusercontent.com/u/21176700/2013-10-03%2016.37.06.jpg)

cc @joshpc @g-off @bgulanowski @j-mutter 

This needs to be scrutinized, this modifies and refactors the basis of the entire app.