bluViewport: Added ZoomMin/Max properties

Paving the way for ctrl+scroll
bluViewport: Fix bug with transparent layer overflow

Whilst `BitBlt` & `StretchBlt` don't care if you specify a source
portion of the image that is bigger than the image, `TransparentBlt`
will fail if you are not strictly within bounds, therefore we need to
check for an overflow when `InitScrollBars` has adjusted the source &
destination size to avoid pixel squashing/stretching with viewport sizes
that are not exact multiples of the zoom level