Save Spark window positions on non-primary screen
Currently, Spark thinks that window coordinates off the main screen are invalid and resets them at startup. This patch fixes this issue for both the main window and chat windows.
Spark now checks to make sure that at least 25% of the title bar is visible on at least one screen. The reason for 25% of the title bar is that the window could span multiple monitors and trying to make sure that it was completely inside the the union of all the screens was proving to be less than trivial. Besides, I would posit that having at least some of the title bar visible on the screen is a valid position. It's easy enough to change and I won't be offended if you want to revisit this part of the logic.