Switch to a swap buffer instead of a lockless queue

This has better performance for lower numbers of threads (in this case, usually 2). It's also significantly simpler to implement.
Add a client message queue
Arbitrary renderer -> client messages
Make ilG_context_msg access slightly more concise