use pImpl idiom for gamemap in game_board, avoiding map.h include

*** WIP, this seems to work in -debug build but not release build... ***

unit_map is modified in many places that don't normally include
map.hpp. If changes must go through game_board, then the 
game_board header is always needed, currently including
gamemap and all its supporting stuff in places where it wasn't
before. 

so to avoid doing harm by adding game_board, 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)