game: introduce UI component

we transform UI phased component into
separate UI component that has 'zOrder' property
and a separate 'render' method. this solves 2 problems:
* layered UI components like pause menu UI above game UI
* flicker when changing between UIs, i.e. when 'update' handler
  is used both for render and logic there can be situation that
  half of interface is already rendered and decision is taken to render
  something else, it'll then be rendered right on top of current UI