sl2: Finish what's needed to have a screen run SL2 code.

With this, we can display the simplest screens.
Share parser code between ScreenParser and DisplayableParser.
sl2: Implement the if statement.

As a new feature, the if statement can apply to keyword arguments
as well as other statements.
Add more displayables to sl2.
Cleanup various PyDev warnings.
Add textbutton and label to sldisplayables.
Process common keywords in SL2:

* style_group, with styles.
* id
* at
If a non-existent screen is loaded, replace its contents with Null.

This can happen with some game changes, especially when changing
config.developer = True to False. Rather than crashing in this
case, we display an empty screen.

Fixes #320.
sl2: Untested implementation of the for statement.
sl2: Improve sl2.

Largely, got the code written yesterday working.
sl2: Parse one-line python statements.
sl2: Parse multi-line Python statements.
Add set_projects_directory and get_projects_directory commands.

These let users set the projects directory from the command line,
which is useful if they don't have python-tkinter installed.
Implement the pass statement.
sl2: Add the default statement.
Reset the styles before reloading.
Fix prediction of windows and bars.

The style rewrite prevented direct access to prefixed styles,
which caused prediction not to work. With this change, we
handle the prediction in cython, which has access to
prefixed and unprefixed styles.
Make the layout functions (Fixed, VBox, Hbox, and Grid) pickleable.

The Displayables were, but the constructor functions weren't.
This fixes that by turning the functions into classes.
Re-initalize modules rather than reloading them entirely.

This prevents memory leaks through reloaded modules, and should
make reload faster. (It doesn't eliminate all memory leaks,
however.)
Fix memory leaks on reload.

The big fix was to de-init the draw module before deallocating it,
which is what frees up textures. There are a lot of smaller fixes
here as well.