Refactor delivery

This is still very much a work in progress, but I wanted to toss this over for you to take a look at it.  I thought it might help the domain if the value objects are much more strictly value objects, with a generator/factory class to create them. That way, the logic of what needs to build up a value object is separated from the value object itself.

I'm not sure if this adds value or not, but it was interesting to explore. It's not quite done and the tests don't quite pass, but the concepts are there.  enjoy!