DO NOT MERGE: Issue 2106: Live Preview Snapshot

This is a PR for issue #2106.
I do see your point, and appreciate the goal of making the code more robust.

However, the sequence that leads to instantiating this class, at this point, looks like this:

```WPWebSnapshotWorker is used by WPWebSnapshotter
WPWebSnapshotter is used by ThemeBrowserViewController
ThemeBrowserViewControlle is used by BlogDetailsViewController```

By the point BlogDetailsViewController is onscreen, the app is expected to have an Application fully instantiated. If we would follow the same philosophy, we would basically need to add a check for UIApplication virtually in every initializer.

Furthermore, by checking if the `application.keyWindow` is not nil, you're implicitly checking if the application is not nil (it's legal to send messages to nil!).