Planning data-types.

This is a bunch of types and tests, that are required to do a
pure implementation of the planning algorithms.
Yeh, sorry I have just been doing it without much discussion, it has mainly been for expediency to crank out these specs. But I must admit I have grown quite fond of not having to come up with fake names (and with the description being close to the code).