Add 'run-on-main-thread' macro

Use 'run-on-main-thread' macro for all main thread things. Ex. GameObject.

- Modify 'eval-queue' to make it more generic.
- Modify 'listen-and-block' to handle all socket related stuff instead
  of 'eval-queue' doing it