DO NOT MERGE: Issue 2106: Live Preview Snapshot

This is a PR for issue #2106.
Full disclosure: `WPWebSnapshot*` originally came from this `AKWebRenderer` project, before I customized it for our use:
https://github.com/akisute/AKWebRenderer

This was something that was originally in that library. That said, I left it in because, even though I personally can't think of a situation where the `sharedApplication` would return nil, it's still a requirement for this framework to function. It's also hard for me to remove code that makes something more robust, so I left it as it was.