Make Commit polymorphic, update CoreExtender
Rewrite addObjects to be more clear
Update all code for polymorphic commits. Remove withObjects.

A large refactoring.
withObjects was removed in preparation for CR/CX stuff.