Add some initial code for an MPI map-reduce implementation.
Add a .gitignore file.
Start making MPI calls
* Add a wrapper for the MPI C API
* Verify that the map() method calls MPI_Send for each partition
Add more tests for the MpiMapReduce implementation

* Verify the correct count of elements is passed to MPI_Send
* Verify the correct integer version of the start iterator for the partition is passed to MPI_Send
* Verify the correct integer version of the end iterator for the partition is passed to MPI_Send
Send the integer version of each iterator.
Add the destination to the MPI_Send call.
Verify that MPI_Recv is called by non-rank-zero instances.
Rename MpiMapReduce to MpiParallelTask.
Add a task argument, and a few tests which don't work yet.
Change the interface of MpiParallelTask to use integers

The iterator interface requires the implementation to dereference
each iterator between begin and end, serialize each to an integer,
and send each via MPI. This is necessary for container-backed iterators,
but it is unnecessary for generative iterators like the one in this case.

Instead, accept integers directly, and send only those, so make it clear
that this algorithm is not designed to work with iterators in general.
Pass the begin and end integers to the task map method

- Do not call MPI_Send on the rank 0 process
- Pass the integers from the first partition to the rank 0 process
- Pass the integers from the other partitions to the processes with the correct rank
Add calls to reduce and MPI_Send for the non-rank zero tasks.
Make MpiParallelTask as bit more general

Use a vector<int> for the input to and output from the reduce method
instead of explicitly using three integers.
Add a complete method with the correct calls to MPI_Recv.
Call reduce on the original task to accumulate the data.
Switched input and output int types to be unsigned int.
Begin to integrate the Nash strategy interators with the MpiParallelTask code

- Expose a conversion from an iterator to an integer
- Begin writing a partitioning method
Complete the partitioning method for consecutive integers.
Add a parallel task to be used with the distributed parallel task runner.
Get the project compiling with actual calls to MPI.