Updated GUI to use roles

This means that the GUI can now cope with selecting separate source and
binary implementations of a single interface (however, the rest of the
selections code can't yet).