Refactored DefaultComponents

Added a new DefaultComponent marker interface. All DefaultComponents now
have a Format field - "format" - and override the getFormat() method
from the HasFormat interface to return this private field.

AbstractFormat, when creating components, now checks to see if they are
DefaultComponents, and sets their format field if appropriate.

This is necessary because Default components have a 1:many relationship
with Format implementations, and thus relying on a component:format
mapping to retrieve the current format is not applicable.

Ideally this logic will be factored out to a single abstract class, but
that is a more challenging task because of the limitation of multiple
inheritance (each Default component is already inheriting from its
corresponding abstract class, which uses a mapping-based getFormat
implementation).