WIP datasources: Add support for specifying multiple datasources

WIP

If multiple sources are specified, the first available source is used.
That is the idiomatic way to do it :/  I could use a map and use delete(), but then the order I traverse it isn't guaranteed.