Refactor Reserver

Centralizes and simplifies validations on reserver. Extracts reservation validations to a mixin so that validations no longer have to push errors up from the internal reservation.