cleanup

- fixed duplicate words in Javadoc
- removed/added empty lines to make source consistent
Test fails on German systems because of different decimal separator
Fixed problem with deprecated ivy resolvers not thread safe in parallel build.
fixed code formatting issue
improved LatestStrategy interface and impl

- overhaul Javadoc (REVIEW-2814)
- extend Comparator interface
- improve types in method signatures
- simplify implementation
talk about how component metadata should allow to flag a module as "changing" (REVIEW-2817)
renamed ModuleRevisionResolveState.getRevision() to getVersion() and made it implement Versioned interface
use Collections.max instead of sorting and picking the last element
generalize LatestStrategy interface
get rid of LatestVersionSemanticComparator in LatestModuleConflictResolver (REVIEW-2814)
get rid of LatestVersionSemanticComparator in DependencyResultSorter (REVIEW-2814)
added TODOs
beefed up spec
deleted LatestVersionSemanticComparator after replacing all its usages (REVIEW-2814)
polishing
GRADLE-2863 - don't get involved in private method calls in the dynamic object stuff.

I originally thought we needed to get the desired behaviour, but it turns out that's only necessary for static inner classes. Therefore, we are simplifying our stuff by dropping support for decorating static inner classes. This lack of support is enforced in any way yet though.
Added serializer for module version selection reason.
Added serializer for module version selection.
Added serializer for module version selector
Added basic caching for configuration resolve results that are loaded from disk.

1. Previously, after the results were loaded, they resided in memory till the end of the build. Now, I'm keeping ~20 results during the build.
2. This improves the memory footprint of builds that need the results. For example, the ide plugins (e.g. 'gradle idea' in a large project).