Allow subclasses of LevelScreen to be instantiated via static method

This is to allow easier handling of the creation of levels via
LevelManager. Eventually, a level should be able to be created simply by
calling (method name TBD)
LevelManager.createLevel("LevelScreenSubClass", "levelName")

Additionally, LevelManager gets passed into LevelScreens so that they
can directly manipulate the current level, restart themselves, etc
Update subclasses of LevelScreen with changes
Reformat error messages
Create LevelManager
Add name to LevelScreen
Let levels know about their name
Create unfinished method instantiateScreen

instantiateScreen will handle passing the necessary objects to a new
level, and saving it under an alias.

This will make it easier to instantiate levels, be it via code or via a
loaded file with a list of level aliases with their associated type,
level name, viewportheight/width, and time limit
Make FinishableScreen an interface with the method finish()

Screens will put their finishing behavior in their finish method.
Classes like the abstract LevelScreen will handle the finishing
behavior, so that subclasses don't have to worry about it, but they can
override finish() if they have anything special they want to do when the
screen finishes.
Allow LevelScreen and LevelTitleScreen to know the alias of its Level

LevelTitleScreen will know the alias of its associated level so that it
may tell the LevelManager to switch to the correct level.
Instantiating a LevelScreen also instantiates the associated TitleScreen
Add commands to LevelManager that allow it to change screens

Though it is a style violation, underscores are used for method names
here because eventually these methods will be callable via the console
in-game, via reflection, and running commands that are namedLikeThis is
pretty weird.
Pass LevelManager into LevelTitleScreen

This is so that the LevelTitleScreen may tell the LevelManager to switch
the screen to the level that is associated with the LevelTitleScreen.
Use LevelManager in LoserGame and LoadingScreen
Fix error in TestLevelScreen
Use LevelManager in LevelScreen and LevelTitleScreen to change Levels

LevelTitleScreen calls level_notitle because it switches levels without
showing the title screen first, whereas LevelScreen just wants to switch
to a different screen.

In the future, LevelScreen will not handle which level is switched to.
It does right now because a mechanism has not been created which allows
LevelManager to manage a sequence of levels.
Add forgotten code
Fix ClassNotFoundException
Fix typo and reword error message
Add nullary constructors

Without a nullary constructor, LevelScreens can't be instantiated by
LevelManager.
Fix NullPointerException