Make Java-Lang compatible with Java 6

- Configure the compiler to emit Java 6 bytecode (unfortunately this means that Java 7 features like the diamond operator can not be used)
- Add alternative code-paths for cases where the field names have changed betwee Java 6/7

This has been tested and all the unittest pass with Java 6, 7 and 8.
Could we use straight reflection here instead of (byte)code-gen? It would make the code so much more readable :-)