More sophisticated validations of referee and contest

These tests make sure we are not putting bad values into the referee
or contest.  They are more complicated than the previous tests because
they consider the application logic and not just existence of data.
For example, the contest deadline must be in the future and the start
of the contest cannot start before the deadline.  There are several
other similar validations like this that just make sense when thinking
about the values that can be stored for these entities.