Fix possible invalid memory access in the MP sides config code (bug #21449)

(thunderstruck, you may want to review this.)

It appears that using a a function or method that returns a temporary as
the second argument of BOOST_FOREACH does something unexpected:

  BOOST_FOREACH(const config* faction, engine_->flg().choosable_factions()) {
      ...
  }

mp::flg_manager()::choosable_factions() returns a new object by value
rather than reference. Somehow this may result in invalid memory
accesses with some Boost and gcc versions (e.g. gcc 4.6.3 and Boost
1.46.1 from the bug report crashes, gcc 4.8.2 and Boost 1.54.0 here does
not), apparently.

I don't know the code well enough to determine whether
choosable_factions() returning an object by const value rather than
const reference is a typing mistake, so for now create a temporary const
reference before the BOOST_FOREACH loop.