#1890 - Refactor Profile from data access utility to object abstraction - Milestone 1

   Add Version.getProfile(). Fix DeploymentAgentTest
   Add Version.getProfileIds()
   Remove ProfileMutator from all ProfileService clients - WIP
   Remove reference to ProfileMutator from FabricFacade & ProjectDeployer
   Remove ProfileService.getProfiles(versionId), use getVersion(versionId).getProfiles()
   Cleanup Version API
   Remove ability to adapt immutable Version
   Remove FabricService.getVersions()
   Remove VersionMutator and redo VersionCreateAction
   Add version/profile validation in builders
   Revisit ProfileService.createVersion(...). Use Set<String> instead of List<String> for configuration file names
   Return List<String> instead of Version[] from ProfileService.getVersions()
   Remove ProfileService.profileExists() - duplicated by ProfileService.hasProfile()
   Revisit VersionBuilder and make all code paths go though Profile/VersionBuilder
   Replace ProcessProfile & VersionProfile with immutable version created through ProfileBuilder
   Replace ContainerProfile with immutable version created through ProfileBuilder
   Move profile overlay handling from Profile to ProfileService
   Use ProfileBuilder from ProfileService to create immutable profile instances
   Delegate all Version related methods in FabricService to ProfileService
   Remove deprecated profile related methods from FabricService
   Add VersionBuilder & ProfileBuilder. Make ProfileBuilders & ProfileService SCR services
   Merge VersionService with ProfileService
   Add VersionService.getProfiles() getProfile, hasProfile()
   Add versionId and profileId to all VersionService/ProfileService methods
   Split Version into Version, VersionMutator, VersionService
   Make the ProfileImpl an immutable snapshot of profile data
   Remove Profile.refresh() now accessible through ProfileMutator
   Remove Profile.setOverlays() now accessible through ProfileMutator
   Remove Profile.setRepositories() now accessible through ProfileMutator
   Remove Profile.setFeatures() now accessible through ProfileMutator
   Remove Profile.setFabs() now accessible through ProfileMutator
   Remove Profile.setBundles() now accessible through ProfileMutator
   Remove Profile.delete() now accessible through ProfileMutator
   Remove Profile.setConfigurationFile() now accessible through ProfileMutator
   Remove Profile.setConfiguration() now accessible through ProfileMutator
   Remove Profile.setConfigurations() now accessible through ProfileMutator
   Remove Profile.setFileConfigurations() now accessible through ProfileMutator
   Remove Profile.setParents() now accessible through ProfileMutator
   Remove Profile.setAttribute() now accessible through ProfileMutator
   Add ProfileMutator for all mutating operations @deprecate all mutating ops on Profile
Fix rebase conflicts. Remove Profile presentation aspects and binding to Git.

This removes Profile.getIconURL(), getSummaryMarkdown(), get/setTags()
Profiles is an immutable data structure that is built through ProfileBuilder
We need to decide how IconURL & SummaryMarkdown can be part of a consistent/atomic update.
So far Profile is independent of Git. Again, we need to decide how the notion of Profile tags can be part of the copy-modify-update model.