GameMP: Fix player count when hosting a saved game.

This fixes the "saved game needs N human players" error and allows the
host to start the game.
GameMP: Fix typecast of auth_player()'s arguments.
GameMP: Send MPMSG_REFUSE_NEW_PLAYER directly to player.

The game is supposed to show an error message if the host rejects the
player. It first checks to see if the player id in the received packet
is the same as the one in mp_obj. However, the player id is only set if
the host accepts the player. This means that the rejected player will
never see the MPMSG_REFUSE_NEW_PLAYER error message because the player
ids won't match. Sending the message directly to the player instead of
broadcasting it fixes the problem.
MultiPlayer: Fix off-by-one errors.
OBUTT3D.cpp: Fix static buffer overflow.

The save_back_buf array did not include enough storage for the bitmap
width and height (4 bytes), causing IMGread() to write past the end of
the array.

Found by AddressSanitizer. To reproduce the bug, start a new game and
click on your fort.
DynnArray: Added const keyword to 'property' functions
War Factory: Shift-clicking adds/removes 10 weapons at a time to/from the build queue
Town: Shift-clicking will train 8 units at a time (or cancel 8 units)
Harbor: Shift-clicking adds/removes 4 ships from the build queue at a time
Merge branch 'obutt3d-fix-buffer-overflow' of https://github.com/7k2/7kaa into obutt3d-fix-buffer-overflow