Fixed text corruption and loading crash (take 2)

- Moved all of the operations requiring access of MLIFont objects to the
UI thread, and added checks in MLIFont methods to ensure that they're
always called only on the UI thread.  Not sure why, but even with a
thread lock pattern, I still saw the crashes.

- Also switched the check for the UI thread in Image to use this new
method.

- Finally, added the CaseCreator directory to .gitignore so I can stop
having to uncheck all of those files every time I want to check
something in while I work on the case creator.
More case creator staging

- Accounting for a return type difference between vector<T>.size() and
QList<T>.size(), since GeometricPolygon uses both depending on whether
we're in case-creator mode or in game-executable mode.
More case creator staging (#2)

- Simplified some things in XmlReader/XmlWriter - rather than having a
billion #ifdef/#else statements, we now just typedef strings and images
differently depending on whether we're in game executable mode or case
creator mode.

- Added these new things to a common include file XmlIncludes.h, which
is included by both XmlWriter.h and XmlReader.h.

- Changed XmlWriter to be usable by the case creator, and also added a
mode in it to make its output human-readable, which will cause it to add
carriage returns and indents.
More case creator staging (#3)

- Adding the ability to the basic primitives to save themselves to a
case creator project file.

- Also fixed a bug in GeometricPolygon where for loops accidentally
started at 1 instead of 0 due to a copy/paste error.
Fix some memory and FFMpeg issues
Conditional debug message
Fix compilation with older FFMpeg versions
Merge pull request #34 from phantom10111/master

Memory and FFMpeg fixes