deduplicate code for running TouchSource backends

Fixes #122

This makes it much easier to add new TouchSources too