fixup [command] [move] implementation

The move implementation used a function from map_location.cpp,
parse_location_range. This has the consequence that if the move tag
has mismatched numbers of entries for x and y, it is not reported
as an error and instead some truly bizarre, although not "undefined"
behavior ensues. Since this has obvious potential to conceal bugs
and no obvious benefit, I have changed this to a more sane
implementation. See chat log today with gfgtdf for full details.
add test_move unit tests