Add support for the additionalProperties validator.
Add part of the 'patternProperties' validator.

Handle cases where 'patternProperties' appears without 'properties' as one
of its neighbors.

SetSchema can now return an error value.
Complete the 'patternProperties' validator.

It now works alongside the 'properties' validator as well as
independently.
Add the 'required' validator.
Make touchups (better errors and sets).

Use `map[string]struct{}` to create a set instead of `map[string]bool`.

Replace `fmt.Errorf("foo")` with `errors.New("foo")` throughout the
code.
Merge pull request #23 from cupcake/more-object-validators

Add more object validators.