Unifies handling of puppet version, compliance, and platform URIs

A new enum named PuppetTarget was added. The target contains the
literal used by the prefstore ("2.7", "PE 2.0", etc.), a compliance
setting, a proper semver Version and a target platform URI.
Merge remote-tracking branch 'origin/dev' into puppet-target-unification
Treat "future" as a target in its right.

This commit renames the PUPPET_3_2_FUTURE to PUPPET_FUTURE and adds
a new PuppetTarget enum PUPPET_FUTURE with the literal "future".