In viewport refactor

Merge complete refactor using vvo/in-viewport.

Now handles images, hidpi images, iframes and you get access to the complete vvo/in-viewport API.

So you can also lazyload widgets.

Fully unit-tested using Mocha and testling.com