Fix java.util.Random performance regression.

With the monitor change in ART, getting the identity hash code of an
object puts the hash code in the lock word. This hurts performance
if you synchronize on said object since it makes it that we always
go slow path for monitor enter and exit. Although the fix
allocates a new object in the Random constructor, it should not cause
performance problems assuming people don't excessively create new
random number generators.

Change-Id: I750e57fb7c5f70e66ad85d19e2c065e9e52a613f
Improve URI.equals performance.

The main improvement is that we're vastly reducing
the amount of garbage this method creates.

Also, get rid of some incorrect checks and add a new
benchmark test case.

Before vs. After:

URI                            Equals     1540.1 =
URI EqualsWithHeavilyEscapedComponent 11921397.1 ==============================

URI                            Equals     1337.2 =
URI EqualsWithHeavilyEscapedComponent   588934.3 ==============================

Change-Id: I9ddb87b8267f0ac6a3ac85c2989cc0dd305ef6a1
Minor cleanup of deepHashCode / deepEquals.

These methods used equals() comparisons where identity
checks would've sufficient. As expected, this results in a
small but measurable performance increase on both art
& dalvik.

---------------------- After --------------
ART:
    arrayLength    benchmark      us linear runtime
              1 DeepHashCode    8.08 =
              1       Equals   17.68 =
              4 DeepHashCode    8.63 =
              4       Equals   18.20 =
             16 DeepHashCode   19.59 =
             16       Equals   41.19 =
            256 DeepHashCode  255.41 =
            256       Equals  483.61 ==
           2048 DeepHashCode 2321.91 ==============
           2048       Equals 4932.40 ==============================
Dalvik:
    arrayLength    benchmark      us linear runtime
              1 DeepHashCode    32.7 =
              1       Equals    65.3 =
              4 DeepHashCode    34.4 =
              4       Equals    67.7 =
             16 DeepHashCode    76.0 =
             16       Equals   142.8 =
            256 DeepHashCode   755.6 =
            256       Equals  1515.6 ===
           2048 DeepHashCode  6915.4 ===============
           2048       Equals 13786.6 ==============================

------------------------ Before --------------------
Art:
    arrayLength    benchmark      us linear runtime
              1 DeepHashCode    8.13 =
              1       Equals   17.86 =
              4 DeepHashCode    8.63 =
              4       Equals   18.92 =
             16 DeepHashCode   19.59 =
             16       Equals   40.89 =
            256 DeepHashCode  253.88 =
            256       Equals  477.02 ==
           2048 DeepHashCode 2795.26 ================
           2048       Equals 4962.11 ==============================

Dalvik:
    arrayLength    benchmark      us linear runtime
              1 DeepHashCode    32.8 =
              1       Equals    66.7 =
              4 DeepHashCode    34.4 =
              4       Equals    70.1 =
             16 DeepHashCode    74.1 =
             16       Equals   147.9 =
            256 DeepHashCode   805.0 =
            256       Equals  1573.2 ===
           2048 DeepHashCode  7253.4 ===============
           2048       Equals 14349.8 ==============================

bug: 9320068

Change-Id: Id73bf38dd0777b2ec9004a2941523d082bbc74c9