Validations for all parameters in the public classes

This adds validations to all public classes and defined types, and warnings to the ones that were marked as private to discourage people from including them in their own classes. These can be turned into hard fails later. This should aid in any refactoring efforts that may go on.

The validations will likely effect some people's manifests but it's hard to account for what other types people might be using, so there are no deprecations for old data types.