Rewrote Java process management in golang

Previously, we have used shell scripts to manage the Java process. This
is becoming unmaintainable and each platform needs it's own
implemntation. So rewriting the process management in Golang so that
same code can be used on all the platforms

This implementation respects some environment variables to alter the
classpath and JVM args etc. It reads the classpath, convert all of them
into absolute path before starting the java process. Classpath will be
specified as a comma separated list in the env variable

This also allows switching Java versions so that tests can target
different java versions