Change handle_subtypes to be an internal method
Use context manager for assertRaises
Switch to absolute imports
Fix pep8 issues
Add more validation for struct params

* Validate unknown struct members
* Validation required struct members (recursively)
* Validate for unknown top level params
Add validation to verify list members are validated

Part of this change includes providing good error message
for list validations.

If an element in a list fails validation, we get an error
message that does not contain the param.  This is because the
list element failed the validation, not the list param itself.
The element validations are caught and reraised with a more
helpful error message.
Allow strings for streaming payloads

Yes, you don't get the nice streaming behavior,
but it isn't technically wrong and it doesn't seem
like we should restrict users from doing this.
Add comment and docstring to base param class
Merge branch 'struct-validate' into develop

* struct-validate:
  Add comment and docstring to base param class
  Allow strings for streaming payloads
  Add validation to verify list members are validated
  Add more validation for struct params
  Fix pep8 issues
  Switch to absolute imports
  Use context manager for assertRaises
  Change handle_subtypes to be an internal method