Moving Contract to a location that makes a bit more sense.
Small refactoring.

I wanted to move more of the logic for handling an individual contract
directive to the directive object itself.
Small refactor

Just moving things into smaller methods so I can work on them a bit
easier.
Some documentation

Just the things that could be reasonably considered public. All of the
other classes are marked "Public" for the sake of the Ruby VM, but
that's more to do with the fact that memory protection in ruby isn't
really... real.