experimenting with futures to detect file changes

i'm not too happy about this. The standard library does not provide
functions to wait on more than one future.

Furthermore the change notification we want to wait on we also want to
abort waiting for. Since futures when destroyed always wait, this
requires a signaling mechanism to abort them.
split shader loader away from main loop