Fix server-side validation

Closes #3122
-Fix validation so that all values are validated instead
 of just values that evaluate to true.
-Ensure validation methods consistently return promises
 and switch error handling from try/catch to promise.catch
 to get rid of unhandled rejection warnings.
-Distinguish between null and empty string database values in
 validation.
-Add 0 and 1 to list of acceptable values in boolean validation.
-Add validation check for empty strings on some fields that
 should not contain empty strings.