Fix crashing when closing an archive with open child archives.

Maybe.

Several problems here:

- The existing tab_closing check stored the index of the tab being
  closed, but compared that to the index of the archive to be closed, so
  it wouldn't always work correctly.

- Closing an archive with open children would save the top-level archive
  first, then the children, which probably doesn't work.

- Closing a child archive didn't actually remove it from its parent's
  list of open children.

- Sometimes, for reasons beyond my mere mortal comprehension, wx would
  try to render an archive panel /in response to/ calling Show(false) on
  it.  It only seemed to crash for an archive that USED TO have a child
  open, but I also saw it happen for still-open archives when switching
  tabs.  I don't know if this is a bug in wxAUI or a bug in SLADE or a
  miscommunication or what.

The solution to all this (I think?) is to split tab closing into two
parts: first ask about saving all the open children, then actually close
them only after the original tab has been closed.  I can't find any way
to crash it with this setup.  Phew.
Merge pull request #128 from eevee/fix-child-archive-crashes

Fix crashing when closing an archive with open child archives.
Store crash logs in the user data directory, not the app directory.

The app directory is more likely to be unwritable (and wildly in
appropriate, e.g. on Linux where it's /usr/bin).
Simplify the archive tab closing defenses a bit.

Deleting a tab that's already being deleted turns out to be fine.

Storing the entire dependency list of archives is unnecessary, because
closing the topmost one will automatically close all the children
anyway.
Check a propgrid prop for unspecified before trying to cast.
Fix some format specifiers.

Not a big deal and generally just in log messages anyway, but wxWidgets
pops up big angry dialogs complaining that assertions failed in debug
builds, which is super annoying.  :)

Mostly fell into two categories:

- Vector sizes and other uses of size_t (notably, map object IDs) should
  be unsigned long, %lu.  This is still slightly questionable, but far
  less so than %d, and empirically it appears to work fine on both
  32-bit and 64-bit builds.  Technically size_t could be even bigger, but
  offhand I can't name a system where either size_t or long long is
  wider than long.

- Various unsigned locals should be %u.
Fix creation of new maps in a directory.
Fix assertion error when trying to show an archive's path sizer.

The path sizer is actually a grandchild of the panel's sizer, so we need
to use GetItem() with the recursive argument.
Merge pull request #129 from eevee/misc-minor-fixes-2

Misc minor fixes, round two
- Added a bunch more stuff to the map editor context menu and toolbar (toolbar icons are temporary)
- Added ability for SAction to use a keybind for the shortcut
Merge branch 'master' of https://github.com/sirjuddington/SLADE.git
- Added line/shape draw and object edit to the map editor menu bar
- Reload the map editor menu bar when key binds are changed
Focus the text control by default when changing a keybind
Add new toolbar icons

Icons for line draw, shape draw and object edit. Not 100% happy with them but will do for now.
Increase default preferences dialog size

Was a bit small for using some pages comfortably like input etc. Also more commenting and stuff.
Merge branch 'master' of https://github.com/sirjuddington/SLADE.git
Fix some problems with architecture merging

Should hopefully fix everything in #109. Also more commenting stuff
Changed handling of MapObject create/delete in undo system

Experimenting with a different way of handling map object creation and deletion in the undo system. This way is a bit more memory and cpu intensive, but should be much less error-prone than the previous method. Very much unoptimised currently (I can think of some simple ways to reduce memory usage etc), but I want to see if it actually works better first
Only keep relevant lists in MapObjectCreateDeleteUS
Don't put keybind shortcut keys on SAction menu items

Was blocking keypresses unnecessarily, eg. pressing e on the map editor console wouldn't add the character (would try to begin object edit instead). Doesn't seem to be any way to show the accelerator key on the menu item but not actually process it