use ptr to impl for gamemap in game_board, avoiding map.h include

unit_map is modified in many places that don't normally include
map.hpp, so to avoid doing harm by adding this class, I am making
it hold a scoped pointer to the gamemap instead of an actual
gamemap. This results in very few changes.

- The implementation of game_board has to use the pointer.
- game_board must use copy and swap idiom
- lua get terrain function must pass strings to the game_board,
  not enums, and we parse them as std::strings in game_board
  instead of as c strings in lua api (which was a bit gross anyhow)
Fix SDL2 compilation with scons
Improve formatting of the MP save/replay warning for Load Game

Sadly, not backport-able to 1.12.
Merge branch 'game_map_scoped_ptr_in_game_board'
fix a problem where :cl command caused campaign to end

Suggested by gfgtdf on irc.
remove unnecessary friend class
refactor replay_controller in order to unfriend game_board
remove unnecessary friend class
team::objectives_changed and countdown ops become mutable

This allows game_board to unfriend both playsingle_controller
and replay_controller, without adding new methods to game_board.

This partially reverts commit
15ed9d186676c56db60e3bd9a3f147b6fdca85a4,

"refactor replay_controller in order to unfriend game_board"
Update VC project
fix compilation
CodeBlocks project update
gui2/tchat_log: Refactor log formatting and page extents calculation

This functionality will be shared with a new Copy to Clipboard button
and its callback in the next commit, so it has to be refactored so that
we don't wind up with duplicate code. This is also why
gui2::tchat_log::model::stream_log() now has a 'raw' parameter which
defaults to 'false'.

I couldn't resist the temptation so I added some const specifications to
a few write-once variables, in particular those that ended up in
gui2::tchat_log::controller::calculate_log_line_range().

While I didn't change any existing behavior (to my knowledge, anyway), I
changed the algorithm for the 'count_of_pages' value as follows:

  // Before:
  count_of_pages = model_.count_of_pages() != 0
                   ? model_.count_of_pages()
                   : 1;
  // After:
  count_of_pages = model_.count_of_pages() >= 1
                  ? model_.count_of_pages()
                  : 1;

I don't believe model_.count_of_pages() can yield a value less than
zero, so this shouldn't alter the previous behavior in practice.
gui2/tchat_log: Add a button to copy the filtered page contents to clipboard

This copies the current contents of the dialog to clipboard. The button
currently lacks a tooltip because the tooltip has the potential to cause
map labels to glitch through the dialog when displayed (see commit
eab3e6fb646fda8cc6101a3e568c86c2b17b707f and bug #22176).
update_server: Use $HOME/source for SOURCE_ROOT

... instead of hardcoding a path in /usr. This should let server2 and
server3 use an unmodified copy of the script.
Merge pull request #202 from aquileia/VC_update

Update VC project
campaignd: Don't use GUI1 markup in [upload] response

Wesnoth 1.7.x and later use a GUI2 code path to display the [upload]
response message, which means GUI1 markup won't work with it. They do
not enable Pango markup either, and in any case, formatting messages
properly should be the client's responsibility, not the server's.

Perhaps later we should allow including a secondary message in the
response or something like that.
campaignd: A few style consistency fixes I missed before

Spacing, unary & positioning, and static functions vs. anonymous
namespace functions.
wam: Use a tuple for the --change-passphrase argument's metavar

Fixes its help entry looking like this:

>  --change-passphrase ADD-ON OLD NEW ADD-ON OLD NEW ADD-ON OLD NEW
>                        Change the passphrase for ADD-ON from OLD to NEW

When it really should look like this:

>  --change-passphrase ADD-ON OLD NEW
>                        Change the passphrase for ADD-ON from OLD to NEW
Don't offer resolutions below the minimum size