Initial support for bitmap surface

This pull request provides initial support for bitmap surface based on the osd branch code.
There are a couple of extra feature supported i.e.
* null rect support for the render methods
* invalid source surface handle for the render methods