First clean up commit. Some design changes, primarily in core objects. Using prototypal inheritance instead of functional.