Major change to the syntax used to declare embedded arrays

The previous syntax of just putting a type in a single item list to specify an embedded array, was inadequate for a number of reasons.
 - Impossible to declare list of lists and retain schema type-checking
 - Impossible to make lists validatable, required and have a default value
 - Syntax is clunky, and cumbersome to deal with.

This commit changes the syntax from this:

"things": [basestring]

to this:

"things": {"type": Array(basestring), required: True}
Improved handling of array types
Fix spacing
Added support for defaults to embedded arrays
Added a test to confirm that array fields can be required.
Refactored some code to make it more readable
Don't reinvent the wheel
Explicitly test that nested schemas can's be validated as a whole (though we want to add support for this ultimately)
Improve formatting of schema format exception messages
Change terminology in tests for arrays
Ensure that arrays can be validated
Improved validator error messages
Improved docstrings on validators
Created an each_item validator designed to be used with Array field types which applies wrapped validators to all values in the fields list value
Added a  validator which can be used with a list field value to verify all items are distinct
Added docs for new Array syntax
Update README.md
Update README.md
Merge pull request #1 from gamechanger/tl-embedded-arrays

Rewrite of embedded arrays