Changes
Move dependency work into a more conventional method of abstraction
Move error work into a more conventional method of abstraction
Abstract option parsing
Fix dependency and error superclasses
Abstract dependency validation