Unused variable
Made roles belong to implementations, so we can:

1. Have multiple implementations of a class in the same program
2. Allow overriding of the implementation at import or construct time.
Fix tests broken by last commit 50008362feef81523add17e58400a53bc4ab483b
Constrain arguments to minionize()
Fix tests affected by last commit: a8ccdce573d0cce6ca9d39049c0525e0d1d6e685
New dependency