Fix for Download thread access

Since I wanted to explore how the backends relate to the DSL, I took a stab at issue #440 and I think I've got it mostly addressed.

This extracts a backend for the `Download` class, the only meaningful thing it does being that it allows `eval_block` to pass along to the `::Swt.display.async_exec` so we're on the right thread.

While this worked right in testing out the apps (the sample in the original issue runs, hurray!), I found that in the specs it just hung until our `eventually` timeout expired. Don't know nearly enough about SWT at this point to debug further, so I patched it in ugly fashion in the spec until someone can help me out there.