IDrawer interface, separate out camera callbacks

Consolidate asset and UI drawing behind IDrawer, keeping core drawing
agnostic of underlying objects.

Move camera-related callbacks out of the Demo class and into a CameraControl
class.

Move frustum/perspective stuff out of the Demo class and make it the camera's
responsibility.