add conversion of "~/campaigns" to "~add-ons"

grep turns up several old add-ons that use this for map_data.
add a tupled list of mainline campaigns

The next commit will use this list to keep mainline paths untouched while it updates old UMC paths from 'data/campaigns' to 'data/add-ons'.
convert old UMC paths from data/campaigns/ to data/add-ons/ in a mainline-safe way

Explanation:

x = 0:  Starting point of value x; will be incremented upward with each replaced path.
for dc:  With finditer, we turn up all paths in a line.
  if dc.group(1):  We want to skip campaigns that have a match in the tuple 'mainline'.
  lines[i]:  Otherwise, we reconstruct the line, substituting 'data/add-ons/' for 'data/campaigns/'. For lines where more than one path needs to be replaced, however, there is a complication. Since 'add-ons' is two characters shorter than 'campaigns', but start() and end() are based on the original location of the iteration, we have to offset start() and end() by two for each prior replacement.
  x+2:  Having made a replacement, we increment x by two.
  print:  Report the change to stdout.
Updated the Latin translation.
miscellaneous spelling corrections
tweak "dying words" error message to try to improve clarity

The existing error message is oblique enough that those developers who knew enough to understand what wmllint was driving at would normally know better than to use "die" for last words in the first place. While the message may help experienced developers porting the work of inexperienced authors, most developers getting this message are probably puzzled. A more direct message would be more likely to set newbie UMC authors on the right path.
increase the number of orcish warlord portrait replacements to improve variety

With three new orc alternate portraits added during 1.9, it is no longer necessary to double-up any of the substitutions for the five old-style orcish warlord portraits.

In fact, with six portraits available, one has to draw the short straw, and I chose grunt-4. I prefer grunt-5 and grunt-6, and also find them more leaderly.
Merge pull request #18 from groggydice/lint

assorted basic and hopefully uncontroversial changes
Simplify some code.

Calling insert() on a range instead of explicitly looping. It just
makes the code a little simpler for a human to read.
New function utils::set_split()

This is a wrapper for split() that translates the return value into
a set. Some places where this can simplify the code where updated.
Merge pull request #28 from groggydice/umcpath

upgrade old UMC paths from data/campaigns/ to data/add-ons/
Updated the Latin translation.
Update changelog
Convert carryover::recall_list_ to store configs instead of units.

Creating units between scenarios can cause problems (bug #20704).
In addition, when reading from recall_list_, we always want configs
so there is no point converting configs to units only to convert
them back later.
Simplify some code with utils::join().
Rework some header dependencies.

By moving #include's from headers to source files, there are fewer
dependencies overall, reducing how many files need to be compiled
when headers are touched.
applied utils/wesnoth-optipng

Overall statistics (only for files with a smaller recompressed size):
  Original size: 16720 KiB on 404 files
 Optimized size: 15237 KiB
   Total saving: 1482 KiB = 8% decrease
updated French translation
updated Lithuanian translation
pot-update and regenerated doc files