Composite methods to explicity create from parts array

Allows new composites to be created without the ambiguity of base initialize.

Composites can be created from an array of parts, followed by the options hash,
similar to the basic initializer, but the new method will not attempt to detect
packed parts as an argument.