Added the ArrayRotation puzzle

- Also did minor refactoring
- Included tests for array rotation
- Included a class to deal with 2-dimensional matrices (at least things so far encountered)
- Also started including minor Code contract pre-conditions
- Also added some functional goodies (used in the rotation unit tests)