Viewport

Rather large branch that has been implementing some of the viewport drawing functions. I've got it into a stable state right now but there are some big problems with gfx_draw_sprite to do with zooming so I've had to revert back to rct2 draw sprite for anything zoomed. 

Apart from zooming majority of drawing is now performed by OpenRCT2! 

I'm merging this in now so I can focus on gfx_draw_sprite again.
I sometimes and sometimes don't get an error here when I start Crazy Castle from the scenario selector. I can't produce every single time. It fails to access spr->unknown which seems to point to memory that can't be accessed.

sprite_idx = 51344