major refactor as part of spec testing

- create ParameterCollection and Parameter classes
    - lots of really basic work, hopefully not for naught
    - I may not yet be using Parameters everywhere it would be useful
- rename a bunch of things
- pull out YamlDir into its own file and improve tests