Attempt to make is slightly more plausible to use IvoryT.

This is just shifting code around, the main goal of this
is to re-arrange things such that it is plausible that
I can use the profiling code in the snapshot code to
support the performance changes I am making after this.

This makes things uglier in some spots, but with the
goal of it making everything better. Still undecided
if it is too dodgy, but figured it is worth making a
small step to demonstrate direction I am heading.
Merge pull request #444 from ambiata/topic/ivory-t-the-conclusion

Attempt to make is slightly more plausible to use IvoryT.
Better data-types.

This is a bunch of types and tests, that are required to do a
pure implementation of the planning algorithms.
Date should have tests.
Factset should have tests.
FeatureStore should have tests.