New test project.
Introduced code contracts in various places.
More constructors added to Engine to make initialization easier.
Fields of Engine changed to read-only. Code contracts introduced. Initialization body deduplicated and moved to constructor. Invariant method introduced.