Add Mixeval Edit tests.

These tests are a bit complicated due to the data manipulations done to
try to emulate what users would do on the form. It's going to be quite
annoying to update the tests if we ever change the form.

For some reason, the inline functions in Mixeval controller keeps
complaining about being redeclared, so I've added in a check that only
declares those functions if they haven't already been redeclared. This
doesn't happen during regular usage, so I'm guessing it's something
caused by the testing infrastructure.

Note that a lot of the data checking was put into a helper
_verifyMixeval() method that has 1 quirk where it pulls data from the
database to match against the expected values for MixevalQuestion and
MixevalQuestionDesc. This is a result of the helper method being
abstracted from the mixeval add test. Due to this quirk, when using it
in mixeval edit, we have to call twice with different params to get it
to check the right values.
fixed events add/edit toggle

When the user switches from survey back to one of the other
evaluation templates, the results release dates stay hidden.
We have fixed the bug in this commit.
Update version to 3.0.4
Merge branch 'dev' of github.com:ubc/iPeer into dev

Conflicts:
	app/controllers/mixevals_controller.php
	app/tests/cases/controllers/mixevals_controller.test.php
Merge branch 'hotfix' into dev