Case creator staging

Checking in some changes to already-existing files that are needed for
the coming case creator, in order not to have those paved over by any
new changes that might occur in the future between now and the actual
checking in of the case creator itself.
Case creator staging #2

Checking in some more changes to already-existing files that are needed
for the case creator.

Also removing everything surrounding BeginCheckPartnerAction et al. from
the code base.  That was never used in case 1, as it was replaced by the
far superior and more versatile partner-present unlock condition.  Don't
really want people to be able to access this inferior way of doing
things when they start making cases.
Fixed text corruption and loading crash

- Added a semaphore to MLIFont to support off-thread access of
TTF-related functionality, such as getting the width of a string when
loading the case.

- Added an AutoSemaphore object to help with that; it automatically
waits on the semaphore in its constructor and posts to the semaphore in
its destructor, ensuring that the semaphore will be waited on and posted
to regardless of anything else.

- Also added a sanity check to Image to make sure that drawing only
happens on the UI thread.  That should already be the case, but if not
it'll crash anyhow, so this will give us more sane crash information.
Fixed build break

- Added a reference to SDL.h for SDL_ShowMessageBox in FileFunctions.h.
- Added an ifdef for GAME_EXECUTABLE around the check for the UI thread
in Image::Draw().
Merge pull request #1 from GabuEx/master

Resync