Work in progress: create a plugin architecture for things to fit in

Probably not quite ready yet, still lacking some test coverage, but almost there.

The purpose of doing this is to make time be deterministic.  If we passed the real reactor to `MimicCore`, we'd get the current timestamp.  This might be good for full-stack integration tests which want to validate that the expiration time is still in "the future", which is to say, whatever their local clock tells them is the accurate current time.