Wow, a complete refactor of the options to try to keep things DRY.

* Create a separate class for each option. The class holds all of the applicable logic to do printing, validating, etc.