Bug 1046891 - Add dependency management to Runner

Tracking PR so I can get feedback, do not merge.

Tests en route.

@catlee r?
what is the purpose of "- set(self.name)" here? I'm not sure this does what you think it does:
>>> set('buildbot')
set(['b', 'd', 'i', 'l', 'o', 'u', 't'])