adding an abstracted function (Composer.merge_extend) to handle merging various properties from inherited classes while also using the underlying class systems extend functionality. the abstracted method also fixes an extension bug where extended classes would revert to the base classes function list after a few extensions. not good. added tests for this as well.