Autoconfigure Agent Mode

This branch:

1. Splits out `TeethAgent` from `TeethAgentMode` - the standby and decom code now lives inside of a `TeethAgentMode` implementation, which is used by the `TeethAgent` class.
2. Adds a factory method which hits the teeth-overlord agent configuration API to determine the appropriate agent mode, then loads the appropriate `TeethAgentMode` to pass to the constructor.
3. Renames and splits out a few modules to clarify their purpose.