DO NOT MERGE: Issue 2106: Live Preview Snapshot

This is a PR for issue #2106.
I see your point. I'm familiar with IOC (we use it all over in cocoa delegates!). 

I'm not saying that this mechanism is wrong or incorrect. All of the contrary, looks great, and the implementation is flawless.

However, for the sake of simplicity, i'd suggest that, unless it's necessary, by that i mean, unless there is *at least* one single scenario in which those parameters might change during a web session, it'd be a great idea, just for the sake of simplicity, not to rely on a delegate pattern.

Reason: Unless 100% necessary, you'd save several lines of code, implementing the protocol, checking for selectors, and so on, and everything would end up super compact.