Add assertion on reservation validation

Reservation should only be validated upon creation.
Clean up tests

Fix evil mocking, delete some superfoues test.
Simplify some validators' code

Make the validator less generic, i.e. expect exactly start and end
field, not any fields supplied. The genericity doesn't make sense as all
the rest of framework rely on start-end fields.