Clean up mixins per @nedbat's suggestions from #70
Allow clients of Plugin to disambigate multiple matches

Because entry_points allow for name overlap inside a single entry-point
namespace, Runtime Applications using the entry-points need to be able
to disambiguate, if they have a preferred source of plugin. This is the
most generic way of resolving those conflicts, as it gives the caller
the flexibility to change the resolution every time that the function is
called.

[LMS-48]
Enumerate user scopes, and separate the all-users and no-users case
Merge pull request #73 from cpennington/clean-up-mixins

Clean up mixins per @nedbat's suggestions from #70
Merge pull request #71 from cpennington/plugin-selection

Plugin selection
Merge pull request #72 from cpennington/more-user-scopes

More user scopes