Test against Java 8

Some changes to enable testing against Java 8.

Supports `src/test/java8` in projects, only compiled and run when using Java 8. Adds a Java 8 version of PromiseTest.

Allows Java 8 testing with:
```
# JDK6
./build publishLocal
# switch to JDK8
./runtests --no-publish
```