Params refactor for future OS support with tests... on top of danzilio's refactor

Sorry again for putting this on top of danzilios refactor. If you suck in his pull refactoring I will rebase to make mine simpler to read.

This adds a params class, similar to the Centos refactor, but no actual Centos support yet, just the framework. And tests!

I know this probably won't be accepted as is, but please let me know what works best for you. I don't really want to rebase back to your master though, as it lacks all the other testing infrastructure that danzilio put up.