Change handle_subtypes to be an internal method
Use context manager for assertRaises
Switch to absolute imports
Fix pep8 issues
Add a contributing doc
Add integration tests __init__.py so they are importable like the unit tests.
Adding a new event, before-parameter-build, which is fired before the operation is called and before the passed in parameters are transformed by build_parameters.
Merge remote-tracking branch 'upstream/develop' into develop
Add more validation for struct params

* Validate unknown struct members
* Validation required struct members (recursively)
* Validate for unknown top level params
Merge pull request #98 from danielgtaylor/integ-init

Add integration tests __init__.py so they are importable like the unit tests.
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
Update tox command for 2.6

When the integration tests became a package from
7e25920  (merged via 83fade9), tox would run the
integration tests as well as the unit tests.  This
was a mistake in the tox.ini, but went uncaught.

Now "tox" just runs the unit tests.
Don't type convert to a list

While this is useful in some cases, other times this masks
hard to find issues.

If a user provides the wrong value for a list param, we will
automatically convert the value to a [value].  This is convenient,
provided that the user wanted to do this, but it also makes it harder
to track down errors.  Now you'll get an error if the object
is not a list.
Merge branch 'list-validate' into develop

* list-validate:
  Don't type convert to a list
Merge branch 'develop' of git://github.com/garnaat/botocore into garnaat-develop
Allow bytearrays as valid blob types
Merge branch 'lenient-blob-validate' into develop

* lenient-blob-validate:
  Allow bytearrays as valid blob types