Port OpenJDK8 changes in java.util.Map

& add tests.

The CL add tests for map default methods added in Java 8 - getOrDefault,
putIfAbsent, remove(K, V), replace(K, V, V), replace(K, V), forEach,
replaceAll, compute, computeIfAbsent, computeIfPresent, putIfAbsent,
merge.

Methods have been made synchronzed in Hashtable. They are using the
default map methods instead of taking the upstream changes.

Replace(K, V, V) in LinkedHashMap has been  overridden as it doesn't
record access when the replace method doesn't make any replacement.

Bug: 27426743

(cherry-picked from commit 6206c9f2e70d7b63d8a306a46534c21e4f8fe6f7)

Change-Id: Ie27ea5bd42ddbfa751b89f9eacfb290a3d69f4bb
3 files changed