Component extension interface fix (part II)

Extension of PR #228. Fixes inconsistencies raised in the second half of issue #86. Specifically the previous Component interface consisting of: `finalizeFromProperties()`, `connectToModel()`, `addToSystem()`, `initStateFromProperties()`, `setPropertiesFromState()` were made public non-virtual methods and the corresponding extension (virtual) methods were renamed `extend<public_method_name>()`. This allowed the base to decouple and  perform operations regardless of being called from the derived. This included invoking the same methods on (sub)components. Now all `Super::extend<...>` are consistently called first in the extend method of the derived Component. There are no exceptions to this rule.