Add validation constraints to most entity properties.

Makes progress towards issue #13.

Signed-off-by: Max Fierke <max@maxfierke.com>
Supervisors are optional.

Signed-off-by: Max Fierke <max@maxfierke.com>
Only allow supervisors to edit some user properties (but only other users).

Signed-off-by: Max Fierke <max@maxfierke.com>