bad_lexical_cast derives from std::exception
catch bad lexical casts (from parsing map locations from configs)
add map_location characterization tests

There is a compiler option to generate the expected output set for
the current build, see test_map_location.cpp
refactor synced_commands [move] to use read_locations, not reimpl.
fixup test_map_location.cpp

Was checking vector sum commutativity twice, replaced with an
anticommutativity test for vector_difference.
Fix map_locations.cpp read_locations function

read_locations will no longer silently process a mismatched list of
x and y integers as a valid path, instead it will throw a
bad_lexical_cast. gfgtdf and I discussed on irc, we don't believe
that this will break save or replay compatibility, and it could
potentially help to catch possible OOS bugs in the future. I am
currently passing all my C++ and WML unit tests with this commit.

This commit also changes the [command] [move] handler over to use
this function directly without checking for mismatched lists, so
if this commit is reverted that function will still work correctly.
Merge branch '1.12' of git://github.com/wesnoth/wesnoth into 1.12