Cleans up & improves some of the replay internals.
Prior to this commit, IBattle is marked as boost::noncopyable but its derived class OfflineBattle has a copy assignment operator=() defined, violating the contract but not issuing any compiler warnings.
With c++11, there are two additional ways of using noncopyable code: one is to use the =delete syntax to mark the copy constructor and copy assignment as invalid, the second is to supplement with move constructors
  and move assignments so that basic passing of the object can still take place.
This commit adds both of these facilities to OfflineBattle and its ancestor UserList. It also provides some fields that were missing in the previous OfflineBattle copy assignment operator, and
  update some calling code in the GUI to use const references instead of copying objects around.

There is still some cleanup to do with IBattle since boost::noncopyable is being phased out and is generally not as effective as the c++11 method, but it is an interface and so I held off on modifying it
  until I understand on where it is used elsewhere.
Merge branch 'master' into replays-internals-fix
adds explicit move assignment operator for Replay to satisfy gcc 4.6.3
explicit casts for move assignments to satisfy travis/gcc 4.6.3
similar compiler fixes to Savegame as for Replay
Merge pull request #271 from MajBoredom/replays-internals-fix

Cleans up & improves some of the replay internals.