Improve webpage.render(), part 1

depending of the values of clipRect, scrolling etc, rendering
was not what we expected.

Rework the render() algorithm. Added bunch of tests.

All cases are not yet verified. It needs more tests.

It will probably help to fix issue #75.
Setting webpage.clipRect should accept width and height with 0

phantomjs conformance.
Improve performance of webpage.render()

Previously, webpage.render() retrieved the image content
as base64 content, and then convert it to binary content
before storing it into a file.

The image is now retrieved directly as binary content.

rework also the way how options are readed and verified.
Force redraw of the layout after zoomFactor setting

It probably help to fix issue #75 where in some case
zoom is not applied.