Use closure traits for callbacks in method signatures

The usage is much easier when argument types can be inferred.
mainloop::LoopRunner: more readable inner member
mainloop::LoopRunner: pass SyncRef<MainLoop> to run_after function

Virtually all uses of run_after will pass the mainloop into some
asynchronously invoked closure, so this function signature saves
faffing around with references.