Made AbstractBaseObject.enableChildrenWithParent private and added a protected setter.
Renamed AbstractBaseObject to ConcreteBaseObject because it was not abstract. It should never be instantiated it self but there is nothing stopping it.
Refactoring for last commit.
Added Javadoc comments to ConcreteBaseObject
Added a check to ConcreteBaseObject to stop it self being added as the parent.

Removed final from child methods as this interfered with testing and provided no real benefit.
Added JUnit and Mockito to the project.
Added Unit tests for ConcreteBaseObject. Sort of tests BaseObjectList as well since its part of ConcreteBaseObject.