preferences: Add description and name_short attributes to combo options

name_short is used for the value labels entered into the main advanced
preferences listbox, which ideally shouldn't be stretched too much
sideways because GUI1 sucks. (Optional, used instead of name.)

description is entered as a second column value in the combo box items
list when available, and should be used as a short description of the
entry. (Optional, used in addition to name in the combo box popup view
only.)
preferences: Merge compress_saves and bzip2_savegame_compression options

Now that we have combo box options in Preferences -> Advanced, we can
finally present the saved game compression options in a user-friendly
fashion instead of having two separate options with an unclear
relationship.

However, in order to achieve this I had to move far more code than I am
normally comfortable with:

 * Moved the config_writer::compressor enum type to a separate header
   file, serialization/compression.hpp, in order to make it available to
   more units without pulling a bunch of heavy crap (such as the boost
   iostreams headers) that's normally unneeded. The new type is
   compression::format.

 * Added a compression::format_extension() function to determine a file
   extension string according to a compression type. This is needed more
   often than one would think, see below.

 * Changed all savegame-related classes to use the compression::format
   type instead of a single boolean flag and bzip2_savegame_compression
   queries. This is a code-heavy task by design.

 * Changed all code scattered around deciding whether to use ".gz" or
   ".bz2" for a save extension to use compression::format_extension()
   instead. This affects both saved game implementation and interface
   code for some reason (read: poor design).

 * Removed the bzip2_savegame_compression preferences option, reusing
   the previous compress_saves option for this feature, turning it from
   a boolean option to a string option ("none", "gzip", "bzip2",
   defaults to "gzip" per advanced_preferences.cfg).

 * preferences::compress_saves() became
   preferences::save_compression_format().

 * Without bzip2_savegame_compression, people who previously enabled
   bzip2 compression will revert to gzip compression. This seems to be a
   rare enough case to me to bother with providing backwards
   compatibility with a feature that only existed for [1.11.0, 1.11.8).

 * For preferences files from previous versions where compress_saves was
   set to either "yes" or "no", there will be a conspicuous value in the
   second column of the advanced preferences list, especially if they
   are using a translation; it'll be either "yes" or "no" as an
   untranslatable string. A value of "yes" is equivalent to "gzip", and
   a value of "no" is equivalent to "none". Any other unrecognized value
   is equivalent to "gzip". As soon as the user chooses a compression
   format again, one of the three supported values ("none", "gzip", or
   "bzip2") will be written to the compressed_saves attribute in the
   preferences file.

All in all, a ridiculously messy commit that's not particularly feasible
to break down into separate pieces because all of the involved code is
very closely related to the overarching feature that's being
implemented in it.

Note that the save_index currently only uses gzip regardless of whether
bzip2 is the current compression format choice. This was the case even
before this commit, and I'm not sure it's worth it to change it given
the potential CPU usage and the fact that save_index tends to be broken
most of the time anyway.