Add MPI_IslandModel: a distributed island model where each MPI rank
runs one island with asynchronous migration via MPI send/receive.
Key features:
- Single-message MPI protocol: MPI_Isend (data) + MPI_Get_count/
MPI_Recv on receive side. Avoids the two-message (size + data)
pattern that can deadlock under oversubscription.
- MPI_Iprobe for non-blocking message detection (upstream's
communicator lacks iprobe())
- Non-blocking sends with PendingSend tracking and MPI_Test cleanup
- Receive-before-send ordering to prevent message accumulation
- Post-loop drain with safe shutdown (cancel pending sends)
- Configurable poll interval (default 1s)
- Thread-safe update method for asynchronous migration
- Debug-level migration logging via eo::log
Extended Island with:
- IslandType enum (HOMOGENEOUS/HETEROGENEOUS) for conditional
immigrant re-evaluation
- IslandModelKind enum (None/Shared/MPI) replacing string dispatch
- algoEOT template parameter for algorithm/individual type mismatch
- finalize() call after population integration
Extended islandModelWrapper with MPI_IslandModel overloads,
initial_values parameter, and algoEOT support.