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. Looking through usages it will be useful - there is a little bit of this - https://github.com/ambiata/ivory/blob/topic/plan/ivory-core/src/test/scala/com/ambiata/ivory/core/RepositoryScenario.scala#L25