Refactored findOrCreate* methods. All unit tests pass.
Added in date validation and associated exception. Added unit tests to
test edge cases for date creation. All unit tests pass.