SWT threading model

This extensive change allows UI calls to be made between py4j and eclipse.

This means that products can script GUI things such as plotting using py4j.

The change works from a shell python or a pydev console.

Tested on windows only at the moment although mnay users of Dawn are on linux.