allow more coordinated access to available users

a DataSource can retrieve users and returns a record that includes the scope
that the record originated from. This allows us to generate a scope_id for the
user (eg. user_1005).

This should close issue #56