Reduce Duplication Between DefinitionInterface Implementations

Both ClosureDefinition and ClassDefinition share a lot of common things
but, generally, have duplicate code. This pulls that common code out
into an abstract definition.

Conflicts:
	src/Orno/Di/Definition/ClosureDefinition.php
Removes un-needed class level doc blocks
Bump copyright
Fixes doc block
Fixes return type of add method
Contains small syntax changes