JDK 1.6 compatibility changes

Changes necessary to create Java 6 compatible roaster artifacts. 

What's a little weird is that the project still needs to be compiled using a Java **7** compiler. As far as I can tell, this is because the type variable least-upper bound logic (for classes like `AbstractGenericCapableJavaSource<O extends JavaSource<O> & PropertyHolderSource<O>>`) in the Java 6 compiler can't deal with the recursive structure in roaster-impl created by classes like  `JavaSource<T extends JavaSource<T>>`. 

The Java 6 compiler will throw an OutOfMemoryError (complaining about either the GC Overhead limit or lack of heap space, depending on your options) with the top of the stack listing the `merge`, `intersect` and of course `lub` methods in `com.sun.tools.javac.code.Types`. The Java 7 compiler will quickly and happily complete.