[mpi] Removed old comment.
[mpi] Made tags processing into separated processes.
[mpi] Added a request counter to avoid problems with multiple requests with the same key.
[mpi] Made a method to get responses to requests, as they might collide.

Previously, we used to directly discard responses to stuff we didn't request
locally, but it's possible to have multiple requests pending, like this:
1) requests load
2) while waiting for the request, processes an inserted message
3) if the archive stores everything, emmits another request
4) goto 2

In this case, different layers might ignore data from others. Now every layer
should answer correctly to all responses.
[mpi] If some other archive dies and we were waiting for its data, don't wait anymore.
[mpi] Non-blocking receive now returns an optional.

If a remote archive died, the program could get stuck trying to get a response
from him. Although it correctly processed dead things, this info didn't get up
to the get_response method.
[mpi] Added test for recording everything.
[mpi] Cancel request in case source died.
[mpi] Added remove test.
[mpi] Added possibility of using threads and MPI.
[mpi] Started adding documentation.
[mpi] Added more documentation.
[mpi] Added more implementation documentation.
[mpi] Avoids blocking at non_blocking_recv if everyone is dead.