Removing broken symlinks
Handle $ref and change how ID is handled

ID must always be set in my schema objects, so it was changed from a validation
method into a regular method.

$ref has some special rules that should be applied before the other validations
are performed, so that got broken out into a separate method as well.
Updating comments
Fixing 'this' references and tracking all children
Adding several validations
No longer needed
Merging and updating documentation