WIP datasources: Add support for specifying multiple datasources

WIP

If multiple sources are specified, the first available source is used.
I'm no go expert but this block for removing an item from the list/slice looks really screwy and I hope there is a more idiomatic way to do it (or a better data stricture to use). Also I'm curious why this is safe to do during iteration.