Event system refactor

This is the work of at least hiding the while 1 loop. It must be somewhere, in pygame is no way to completely eliminate it, but this approach at least hides it from the code which is usually looked at.
Note that the non-user input events are handled using pydispatcher.