Components Re-evaluation

Reworked some component types in order to give them better-defined
responsibilities:

The previously-named "SightFaction" class has been renamed
"FactionComp", and is its own component type rather than being part of
the SightComp/SeeableComp inheritance hierarchies. The faction value
held by this component defines both how the character reacts to other
objects (as part of an AI Character object) and how other characters see
it.

The new FactionComp component type has its own component manager,
FactionCompManager, which is responsible for instantiating FactionComps,
as well as loading from- and saving to- file.

The previously-named "CharacterAttribsComp" is now named
"CharacterAttribs" and is no longer a component type or a part of the
CombatInterfaceComp inheritence. The class is now only responsible for
holding the character's attributes and controlling the interactions
between primary and secondary attributes.

The previously-named "CombatInterfaceComp" is now named
"AttribsInterfaceComp". The class acts as a wrapper for a CharacterAttribs
object - controlling the game's interactions with the character's
attributes - and is the only way to associate a CharacterAttribs object
with a BaseObject.

The "CombatInterfaceManager" has been renamed "AttribsInterfaceManager"
to keep it in line with the renamed AttribsInterfaceComp, but it's
responsibilities remain the same.