Added class structure to handle Java < 8 and >= 8.

From going through the code, one big issue is handling differnt java
versions, especially if command line arguments change, perm gens have to
be handled differently or sometimes, packs might not work with certain
java versions at all. 


Hence, it should simplify code quite a bit and improve flexibility of
the launcher for new java versions to move this into a class structure.
Moved Permgen Paramter Creation into Launcher Classes

I mostly used the code in getActualJavaVersion and isJava8 to create the
launcher factory, which takes a java path and figures out the rest from
there. After that, I have a launcher and I can tell that java launcher
to just create the right permgeh parameter and don't need to worry about
this anymore.