Add partitioning code for XDDMCP.

This adds an extremely tricky bit of code for partitioning a file
into roughly similarly sized pieces.  Thus far I provide 2
partitioning strategies:  Simple which partitions a number of bytes
into nearly equal pieces (as equal as possible, e.g. 10 partitioned
into 3 chunks results in (0..2), (3..5), (6..9) or chunks of size
3, 3, and 4.

  The second partitioner uses an alignment as well.  Thus if you
  try to partition 10 into 3 parts, with an alignment of 2, you get
(0..3), (4..7), (8..9) or chunks of size 4, 4, and 2.

The aligned partitioner ensures you can generate well aligned file
regions, but of course its possible to send it partition requirements
that are impossible.  So, what the partitioner does in that case,
is generate as many valid partitions as possible, and then empty
partitions for the remainder of the hosts.  Also, there is no
requirement that the end of the last partition be aligned, only the
beginning.

It's tricky stuff (though not alot of code), so it may need more testing.
That is why the test harness is there.