Changed RoomGenerator to RoomGeneratorFactory and created Generator interface

What it looks like you were trying to accomplish was a factory like setup, but you had
the static method and the abstract class in the same class which can get confusing sometimes.

Also, if an abstract class offers no other methods except for the abstract methods, your
better off making it an interface (and no, that blockChange method doesnt count, thats just being
lazy :P)
Removed all import warnings