Find{Java,JNI}: Use ENV{JAVA_HOME} first when set

Use list(APPEND) instead of set() to append to lists.
When ENV{JAVA_HOME} is set explicitly place values based
on it at the front their lists.
Find{Java,JNI}: Consider JAVA_HOME before ENV{JAVA_HOME}

Add a helper module CMakeFindJavaCommon shared between FindJava
and FindJNI to select a JAVA_HOME value.  Prefer a CMake variable
or cache entry first, then an environment variable.
FindJNI: Overhaul finding JDK libraries and headers on OS X

Drop the hard-coded framework paths and "-framework JavaJM" on APPLE.

Save and restore the value of CMAKE_FIND_FRAMEWORK.  Use its value to
choose and order between a normal search for jvm&jawt and a framework
search for JavaVM.  When JAVA_HOME is set explicitly by the user then
force a normal search by setting CMAKE_FIND_FRAMEWORK to NEVER.  Once
the library is found, set CMAKE_FIND_FRAMEWORK to help find_path locate
the matching headers (framework v. normal).
Find{Java,JNI}: Use /usr/libexec/java_home on OS X

If no JAVA_HOME or ENV{JAVA_HOME} is set then try running this
tool to get the system default Java home.

Suggested-by: Larry Shaffer <larrys@dakotacarto.com>
Merge topic 'find-java-os-x-fixes' into next

dd72b19f Find{Java,JNI}: Use /usr/libexec/java_home on OS X
70560ee1 FindJNI: Overhaul finding JDK libraries and headers on OS X
fcd66a7f Find{Java,JNI}: Consider JAVA_HOME before ENV{JAVA_HOME}
4b3614b2 Find{Java,JNI}: Use ENV{JAVA_HOME} first when set