Wait to throw ConfigurationException until the end.

  - Allows for all the validators to output an error message instead of just the first one.
Add validation message to @RequiresNonNull.
Make line less dense.
Enum generics dance updates.
Remove extra type parameter from ConstraintValidator.
Drop unnecessary type param and improve type safety.

  - Performs some reflection on generics to verify the ConstraintValidator defined for a constraint annotation is appropriate for said annotation.
Add validation message overrides.
Add @RequiresNonEmpty annotation.