[mpi] Started working towards supporting MPI.
[mpi] Updated tests a little.
[mpi] Changed archive method to be more portable by removing each object.
[mpi] Added methods for mpi object archive.
[mpi] Split mpi header in 2.
[mpi] Added licensing information to some files.
[mpi] Made some changes for correct alive signal.
[mpi] Stop internal mpi processing if got unknown tag.
[mpi] Fixed major bug that caused only 1 tag to be broadcast.
[mpi] Fixed receiving deadlock and insert tag processing.
[mpi] Fixed non block receiving that caused exceptions.
[mpi] Fixed response loading to use parent method.
[mpi] Added first real test with MPI.
[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.