Adds LinearPattern support for cairo.

This patch adds LinearPattern (basic) support for the cairo module. It
also breaks the Context object out into a PXD header for future external
Cython use.
Fixes use of glViewport.