A bunch of work...CI will still fail here
- I put a lot more work here into the API - Now uses a bit better organization where the base param class is only going to enforce string contents. Implementations of specific kinds of parameters need to add their own datatypes and be sure to update the string value whenever the set method is called for their class. The parent class will take care of ensuring that anything written to this value (which is used directly in the generate step) is valid. Any higher level validations can then be taken care of by the higher level implementations, which shouldn't need to worry about the lower level validations. - All of these new things really need test cases written for them so that we can be sure that it works. It's going to get hairy looking for bugs on the higher level classes if this doesn't have a solid test foundation.