Separated PlatformResolver from PlatformContainer

- ‘PlatformContainer.chooseFromTargets’ is now ‘PlatformResolver.resolve’
Replace custom ‘PlayApplicationSpec.playVersion’ attribute with common targetPlatform infrastructure
ComponentSpec.targetPlatform() only accepts a single platform selector

- Multiple calls to targetPlatform are required to target multiple platforms
- Remove NativeComponentSpec.targetPlatforms() : it was replaced with targetPlatform()
Change ‘ComponentSpec.targetPlatform()’ to configure a single platform for the component
Moved getTargetPlatforms() to PlatformAwareComponentSpecInternal

- Added a few new internal protocol interfaces
Introduced an internal type for wrapping targetPlatform requirements