Related to bug #895920 / blueprint "Prerequisites fullfilment by capturing certain houses' buildings"

Implemented FactoryOwners system as using the final concept for documentation with a small change: HaveAllPlans defaults to false ALWAYS.
Fixed:

 BuildingTypes are now checked for FactoryOwner
 HaveAllPlans now work if you gained the building on another way besides capturing via Engineers
And even Forbidden works now. FactoryOwners implementation is 100% complete.
Merge remote-tracking branch 'origin/v02' into gd03
Merge remote-tracking branch 'origin/HEAD' into gd03
Implemented KillDriver.KillBelowPercent as part of https://blueprints.launchpad.net/ares/+spec/partial-resistance-to-driver-killing.

First commit after the HDD crash. It couldn't stop me.
Removed the SavedCanary member from Extension<T>.
Removed the virtual Size() function.
Merge branch 'master' into alex06
Merge remote-tracking branch 'origin/master' into gd03

Conflicts:
	.branchinfo
	src/Ares.version.h
	src/Ext/House/Body.h
	src/Ext/Techno/Body.h
	src/Ext/TechnoType/Body.cpp
	src/Ext/TechnoType/Body.h
	src/Ext/WarheadType/Body.h
Resetting branch to unstable status.
Minor update on FactoryOwners.Forbidden. I still don't like it but my logic sense fails me every time I brainstorm on this.
Merge commit 'fe8c5fce46a3505fb165a82c568798bd270c9fff' into gd03

Conflicts:
	src/Ares.version.h
Recoded FactoryOwners, list of owned houses is iterated only once, localbool hack of Forbidden is thrown out.

This should do as a final variant.
Updated branch info for alex06.
Added some logging functions.
Ported over the AresSwizzle class from dc03-savegames.

Minor changes:
- hash_map and hash_multimap replaced by std::unordered_map and std::unordered_multimap.
- Have the replaced functions return something meaningful.
- Added a call to Debug::Flush() in case the game terminates before the debug file is written.
- RegisterPointerForChange changed to take a reference to a pointer
AresByteStream stub ported over from dc03-savegames.

Minor changes:
- The class does not inherit from std::vector
- Read, Write, Load and Save have been omitted
- Added a typedef data_t, and a Size() method
- Initialized the out variables (needed for Length = 0)
Added two stub methods for loading and saving objects.
Save and Load return bool.