Refactore the way the Surface shim works to allow late loading of graphics.
Episode 7: Refactor graphics class to cache surface objects