WIP datasources: Add support for specifying multiple datasources

WIP

If multiple sources are specified, the first available source is used.
Hm, it seems a funny mix to use both the magic of a go routine/channel and a more traditional looking iterator all at the same time. It would be easier to follow if the total timeout was handled in the for loop with the rest of the logic, or each data source is given its own goroutine so they aren't bundled together into the same loop.