Pass display into fns rather than using atoms
Pass render function to display

This allows for any implementation-specific setup/teardown around the
rendering of each frame.
Push frame creation into enoki.graphics.java2d

This will probably change once we need to capture frame events
Use Thread.yield instead of Thread.sleep
Rename "screen" => "canvas"
Add display initialisation hook
Return updated state from `tick'
Shorten parameter name
Implement super-kludgey double-buffering
Switch arg order