Allow package downgrades for related bundles

Allow package downgrades for related bundles with proper ref-counting.
Make sure packages register their identities in the provider registry.
Uninstall compatible orphaned MSI packages
Make sure enough memory is allocated for compatible packages
Slipstream changes

Pass original source location for embedded bundles so that embedded bundles can be slipstreamed and share package source with parent bundles.
Automatically disable system restore for embedded bundles
Skip the repair of the related bundle if it has the same provider key

This is to fix this scenario
Install BundleAv1
Install PatchBundleV1 (applies to BundleA)
Install BundleAv2 (this bundle includes PatchBundleV2 as an embedded bundle)

Before fix, during install of BundleAv2, PatchBundleV1 would be repaired as a related bundle and both V1 and V2 of the PatchBundles would be on the machine.
This fix skips the repair of the related bundle if it has the same provider key as an embedded bundle that is being installed, so only V2 of the patch bundle is on the machine at the end.

Also add support for passing Ancestors to embedded burn bundles to help prevent recursion.
Add version check to delete correct update key

Update Registration key was being deleted during a bundle to bundle upgrade.
Added version check so that only if the version was the same would the key be deleted.
Fix issues with compatible packages for repair/uninstall

Don't fail uninstall when planned package was removed by related bundle
Don't repair dependent bundles when upgrading a patch or addon bundle
Update pull request with review comments
Merge branch 'issue4242' of https://github.com/heaths/wix3 into develop

Conflicts:
	History.md