Test java.util Collections tests using guava-testlib.

Based on Guava 20.0 jars from https://github.com/google/guava/releases

Notes:
 - guava-testlib 20.0 has tests for OpenJDK 7 APIs only.
 - Due to bug 33068110, the classes with the suite() methods need to
   extend TestSuite, so they need to use delegation to delegate to
   the guava-testlib classes which don't extend TestSuite.
 - Per ABI, the entire suite involves well over 226,608 test methods
   invocations and tens of thousands of TestSuite objects. JUnit holds
   on to these objects throughout, which leads to the test process
   running out of its ~ 250 MBytes of heap memory part way through
   running the test. Therefore I needed to break up the CTS module
   into five chunks that run consecutively, with tests for:
     1.) ConcurrentSkipListMap, natural order
     2.) ConcurrentSkipListMap, custom order (Comparator)
     3.) TreeMap, natural order
     4.) TreeMap, custom order (Comparator)
     5.) everything else
  1.-4.) are > 50k test method invocations each, 5.) is another ~ 37k.

  cts-tradefed run these in reverse order and outputs an incorrect
  total number of tests to run because it only counts the chunks
  run so far. So it will initially claim that 36,730 tests will run
  and only arrive at the correct number of 226,608 tests when
  running the last chunk. There is also a pause between each chunk
  (while it discovers the tests for the next chunk) which can lead
  to confusion.

  The SortedMap/NavigableMap implementations make up the bulk because of
  the combinatorial explosion of exhaustively testing combinations of:
  { bounded/unbounded } x {head/tail} submap x { keySet, values }
    x multiple map sizes  x { multiple test methods } x ...

  Altogether they take 43min to run on one ABI on Nexus6P.

Test: cts-tradefed run cts -m CtsLibcoreJavaUtilCollectionsTestCases \
         -a arm64-v8a
Bug: 16149939

Change-Id: Ia74f2a46a416c521107d2c1974cc7db43f78e6a5
14 files changed