Allow multiple government types to be added to a Faction

Lua Faction:govtype now adds the govtype to the Faction's govtypes list
rather than changing the faction's sole govtype.
Custom systems are now included in the first faction that has the
system's govtype in its list (essentially no change)
Standard systems take the first govtype of the faction they are a member
(used to take the Faction's sole govtype, taking the first was the
simplest for me to implement).
Federation Faction definition now includes 'Earth Colonial Government'
as well as 'Earth Democracy'. This should bring Barnard's star back into
the Federation fold.

Conflicts:
	src/Factions.cpp
Clean-up of Faction usage in Polit

Crime and legality methods now use StarSystem->GetFactionIdx() rather
than looking it up index via a link from govType retrieved from
StarSystem->GetSysPolit()
Removed Faction index from politDesc_t
Moved SysPolit::GetAllegianceDesc to StarSystem::GetAllegianceDesc
Pick System's govType randomly from Faction's govType list

No longer always picks first (last?) in the list.
New Faction::RollGovType method taking an MTRand makes the selection
(May need renaming?)
Removed code for setting get CustomSystem's based on its govType.
Added factionIdx member to CustomSystem in preparation for enabling
setting of CustomSystems Factions from Lua.

Conflicts:
	src/Factions.cpp
Handle Factions with no GovTypes better

Now picks at random from the list of all government types.
Allow Lua to set Faction of Custom Systems

Example system in data\systems\custom\05_rondel.lua
Faction::GetIndexOfFaction method could probably be done better by
someone more familar with C++
Distribute appropriate GovTypes among existing factions

Independent gets everything non-specific.
Federation gets EARTH* (except EARTHMILDICT maps to 'Military
Dictatorship' but doesn't say anything about Earth)
CIS gets CIS*
Red gets EMPIRE*
Add weighting to selection of govTypes, when picked from Faction

Lua Faction:govtype renamed to Faction:govtype_weight and now takes a
second argument for the weight.
Current Faction definitions updated to the new format.
Faction::RollGovType renamed Faction::PickGovType.
Faction::PickGovType now weights its selection.
Tighten implementation of govtype weighting

govTypes renamed to govtype_weights.
govtypes_weights switched to std:vector<pair> rather than std:map
added Lua warning for weight < 0
Tweaks for Faction List now being std::vector<Faction*>
Some Refactoring of Faction::GetNearestFactionIndex

Work for #1641
Move of the bulk of the work for non-custom systems from the class method
to an instance method.
Class method now iterates using an iterator.
Have the class method call the instance method on the currently iterated
faction to test whether it's a better fit.
Merge branch 'build/vs2012' into perf/faction-colour
factionColour retrievable in SectorView without full sysgen

Work for #1641
Added Faction::GetNearestFactionColour class method.
Added Sector::ColourFactions method that populates a sector's
system with the correct base factionColour.
Setting of factionColour in SectorView::Draw3d removed.
Added call to populate factionColour for full sector to
SectorView::GetCache when a new sector is added to the cache.
Add some constants and use them

BAD_FACTION_COLOUR - the colour for system we found no faction for
FACTION_BASE_ALPHA - the alpha for faction systems where we don't know the population yet
Switch to checking population to get if a system in inhabited

Work for #1641
We need to know if a system is inhabited to mark uninhabited systems as not
part of a faction on the map.
Unfortunately there's no way to determine this without a full sysgen, so
we might as well switch to using population rather than count of starports
to check this and save ourselves a bunch of messy flag twiddling code.
Vary label brightness/alpha based on population

Okay I couldn't resist :)
Avoid Constructing Sectors we already have when getting Faction distances

Work for #1641
Refactored Faction::GetNearestFactionColour and associated methods to
take a Sector and a system index rather than a SystemPath, so we can avoid
constructing the Sector again (and doing mini-sysgen) just to get the
distance.
Added Sector::Contains method, answering whether a SystemPath is within
the Sector.
Uncomment incorrectly commented out code

Oops! Systems in the same sector as Faction homeworlds
should now be automatically being placed in that Faction
again.
Cache the homeworld Sector on the first distance calculation

We no longer construct the homeworld's Sector, doing mini-system
for each system it contains, every time we do a Faction distance
calculation.
Instead We cache the Sector the first time we do a distance
calculation, and then reuse it.
I considered caching the homeworld sector when the homeworld is
set from Lua, but Sector(0,0,0) constructed at that point
appears to be invalid (possibly Sol hasn't loaded yet?)
Expose radius attribute to Lua

Since we now have a Faction::Radius method, we might as
well allow you to get the value from Lua.
Bump availability of l_faction_attr_radius to Alpha 29

Since we're now in freeze for Alpha 28.
Also removed repetition of the word 'volume' from the comments
of the above method.