Planning data-types.

This is a bunch of types and tests, that are required to do a
pure implementation of the planning algorithms.
> Yeh, I will add a wrapper that indexes by name.

Cool. Actually if/when you do it we should make `Map[Name, NonEmptyList[(Partition, Partition)]]` (and we should add `groupByNEL` on `Lists` just for fun. :)