[ci skip] [no Renamed "api.role" to "api.adopt". Added user-switching contexts in addition to Role adoption. Wrote a bunch of unit tests that specify the API. I have no confidence in the correctness of the unit tests yet, except for the fact that they all currently raise NotImplemented.