function render(dt) {

    app.emitGlobalEvent("prerender", dt)
    app.emitGlobalEvent("render", dt)
    app.emitGlobalEvent("postrender", dt)

  }
Game loop.

The application object is updated with following properties:
- lifetime: number of seconds since the game loop was entered
- opcost: seconds last opperation took
- ops: opperations per second.

The game loop requests updats using standard
`requestAnimationFrame()` function. On each callback
time-related values are updated, logical update is requested using
`step()` and display update using `render()`.

A number of (global) events are raised on behalf of the application:
- step: update the logic on each frame
- prerender: first step in refreshing the screen
- render: second step in refreshing the screen
- postrender: third step in refreshing the screen