add method to create a viewport: rectangular subset

New method "viewport()" allows to define a rectangular part of a
blitbuffer and create a new blitbuffer object, offering access
to the memory for our blitbuffer, but starting coordinates within
that rectangular area from (0,0).

Note that the new viewport blitbuffer does not allocate new memory.
The callee must ensure that the memory stays in place.
Merge pull request #255 from hwhw/hal

add method to create a viewport: rectangular subset