Calculate capture rect in browser

This allows to save some network overhead (1 request vs 4 request per
element). Plus, it allows to do some preparations to screenshot capture
in future commits (i.e. scroll screenshot rect to be fully visible).
Works for out of viewport elements

Many browsers are unable to capture screenshot of whole page and
capturing only viewport. In this case, we are scrolling test rect into
view before taking screenshot and comparing image size with body size
performing appropriate crop.

This commit has 2 tests failing. Not sure how to rewrite them, needs
refactoring.
Refactor browser and runner classes

Introduces CaptureSession class which now has all image manipulation
logic of Browser. Additionally, it unifies state callback and before
hook running logic. This changes allows us to simplify tests for the
capture procedure.
Add changelog entry on in browser crop rect