Properly name the property lookup tests
Setup structure for Validators Module

* Similar to Properties Module: will have a `Validator` base class
  that each Validator is based on.
Add Mocha to make writing tests easier by including stubbs.
Require `set` library to make it easier to check if arrays equal sets
Add Module to allow Properties to look up and add Validators

* Properties Require Validators in order to make the schema more
  useful by checking specific properties of the value
* Looking up and adding a validator operates similarly to a property
  lookup, except that it does not use `method_missing` and an
  Exception is raised if the constant cannot be found
fix depreciation warning with Mocha
Stub methods used during validation and make initializer forgiving

* `valid?` and `error_message` must be defined by subclasses
* `intiailize` is too strict and does not allow `*args` to be passed.
  * this creates a problem when adding validators that don't require
    any value from the initializer.
Add basic validation rules for `Property` base class

* adds validators to the property during initialization and uses them
  when checking if the property is `valid?`
* stubs `matches_type?` for subclasses to implement
* when errors are detected, the `errors` array is populated for the
  property with error messages
* Property checks if all validators pass when determining validity
* Adds a `required` error message per-request of Schema
  * Can't determine if the property hasn't been added at this level.