Fix segfault during exit.

The job runners are threads that use the job queue, but when the job queue is
destroyed at program exit, the job runners continue to run. On some occasions
they were attempting to run job queue functions after the queue was destroyed,
causing the segfault. This patch addresses that by adding a mutex and a flag
that belong to the job runners, telling them that the queue is destroyed so
they avoid accessing job queue functions.

Most of the credit belongs to Robert Norris who helped with diagnosis, code
structure explanations and hints.
fix a segfault when a redscreen error is closed. fixes #2466.

Thanks to @pgimeno for reporting this, tracking it down and fixing it.
show a recoverable error message if game load fails from the main menu
vc2010
use ScopedArray when allocating with new[] in SQuadSplitRequest

Fixes valgrind warning about mismatched new[]/delete.
initialise m_showCameraName in WorldView::InitObject()

Fixes a valgrind warning about a conditional using an uninitialised value.

This is actually somewhat important; in WorldView::UpdateCameraName,
the value of m_showCameraName is checked before it's initialised, and if
it's non-null (which is entirely plausible and happened in my test run),
the code calls Remove(m_showCameraName), which then gets a bogus pointer.

I'm not sure how this hasn't bitten us before... maybe worth working out.
initialise m_mode in InternalCameraController constructor

Fixes a valgrind warning about a conditional using an uninitialised value.

Before this fix:

- Constructor calls Reset()
- Reset() calls SetMode(m_mode)
- SetMode(m_mode) assigns m_mode = m_mode, and then switches on the m_mode
  value.

After this fix:

- Constructor sets m_mode
- Constructor calls Reset()
- Reset() does whatever is necessary to reset, retaining the current mode.
initialise m_zoomClamped in (both) SectorView constructors

Fixes a valgrind warning about a conditional using an uninitialised value.
Merge remote-tracking branch 'johnbartholomew/cleanup-valgrind-errors'
Merge remote-tracking branch 'radius75/vc2010'
Merge remote-tracking branch 'pgimeno/segfaultonexit'
Merge remote-tracking branch 'johnbartholomew/survive-invalid-savegames' into survive-invalid-savegame
use a MultiLineText for long error messages
Merge branch 'survive-invalid-savegame'