Refactoring

Breaks up the large, tightly coupled, and hairy Mycha class.

This makes testing easier, with the nice effect that it also makes the Mycha class more concise and high-level, with all of the heavy lifting happening in well tested specialized classes.

I think these changes make enough sense now, so let's try to get them in before this PR swells to even more voluptuous proportions.