Updating demo for clarity
This commit represents the move back to Exceptions.

@jokull created a bunch of these ideas and I am bringing them over.  His name
is unforunately not present in the commits because the work was not done in
commits that isolated the idea.

The general idea is that exceptions are thrown anytime validation errors occur.
Types themselves return true or false, making it possible to validate data against
defined types without exceptions, but validation at the model layer will actually
throw exceptions.

Please check both the tests and the demos for examples of how this system now
works.  In short, your code will look like this:

    p = Person(name='James')
    try:
        validate_instance(p)
    except ValidationError, ve:
        print ve

Changes to the validation system itself are also forthcoming so make sure to
follow up with commits after this one for more of the story of @jokull's great
work coming back into Schematics.
Cleaning up the code a little bit. Make sure to notice that __eq__ on the model now treats id like any other field in the model.
Added @jokull's definition of get() to the Model class.
Removed BaseModel in favor of just putting everything under Model
Removed unnecessary import of BaseModel, which was removed
Brought over the features I liked from @jokull's FieldDescriptor class over into
the BaseType.

The FieldDescriptor class is a cool idea, but I struggle to see it's value next
to BaseType when they are performing similar roles.  I prefer to leverage an OO
hierachy to get to the same place.
Following @jokull's lead on some idea for cleaning up the metaclass system.
Fixed bug related to minimized field names overriding use of long form field names during instantiation