mend
write validate macro, organize validation, & move register validation

with this commit, we now have a macro called 'validate' that accepts
a validation handler, a map to validate, and a body of functions to
call upon successful validation. backend validation has been
organized into three namespaces - handlers, forms, and validators.

why three namespaces?

the purpose of having three namespaces for validation is to separate
our concerns, and to make it easy to add other information to failed
validation responses. 'validators' contains validators for
individual parts of a map like 'username' 'password' etc. forms
contains functions that validate entire forms like 'register'
'login' and 'save-note' etc. 'handlers' simply contains functions
that call functions in 'forms' and then build maps of data for the
422 responses caused by failed validations.

the validate macro

this macro was written to abstract some code that was becoming
repetative when re-writing the validation. i often found myself
writing (let [validation-data (some-validator some-info)] ...) where
the ellipses was logic that checked if the validation was a success
or failure and decided to build a success response or a failure
response. now, we simpy call validate with the validator, the info
to be validated, and the happy-path functions, and if there is any
error the macro creates the failure response. this way, the only
repetition is in the word 'validate'.