Post merge fixes
Further improvements to component selection rules infrastructure

- Moved rule processing into a separate class
- Version matching is now a built-in selection rule
- Custom rules that don’t require metadata are applied before version matching that requires metadata
Update spec for component selection rules

+review REVIEW-5137
Mark new interface @incubating

+review REVIEW-5137
Update spec for changed class name

+review REVIEW-5134
Fleshed out story for targeting a component selection rule at a particular module
Add note to investigate turning on TC performance monitoring.
Avoid loading Scala compiler in process when testing with the daemon to conserve permgen.

+review REVIEW-5106
add integration-test for mavenLocal-path to be modified via System-property
Garbage collected a completed story.
Use Encoder.writeSmallInt() instead of writeInt() in a couple of places.
Use Kyro serializer in tests, to cover variable length encoding if the serializer happens to use them.
Added some non-ascii characters to test message.
Garbage collected a completed story.
Garbage collected a completed story.
Use camel case for `pluginDevelopment` project name.
switch on classycle and strict compile for plugin development project.
Removed unused import.
Fixed typo.
Spec updates.