WIP datasources: Add support for specifying multiple datasources

WIP

If multiple sources are specified, the first available source is used.
Yeah, doing something like `sources = append(sources[:i], sources[i+1:]...)` works great on non-malloc'd types. Makes me sad too.