An Application-Level Solution for the Dynamic Reconfiguration of MPI Applications