replace angular validation with 'validateur' for registration

all angular validation for registration has been replaced with
backend validation using validateur. currently, we are sending back
to angular an object containing "errors" and "notify". the only
problem is that for nested data structures, like
credentials.username and credentials.password, errors come back in
an *unusable form where the object property is literally
'[:credentials :username]' and the value is the error. ideally, we
would be getting back an object that has the same structure as the
payload, just replacing the values with an array of error messages.
validateur may not be the right library for this task
replace validateur with bouncer, fix registration validation

validateur has been replace with bouncer due to bouncer's ability to
return a proper JSON (see previous commit for more info). validation
of registration has been implemented using bouncer and messages
successfully appear.

next steps:
- confirm registration validation works
- get login validation working
  - create a macro to handle validation in service functions
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'.
fix login and move it's validation to backend

while attempting to move login validation to the backend i ran into
a bug with the username->user function that caused friend to throw a
null pointer when trying to authenticate a non-existant user. the
issue was that username->user returned an empty map when it could
not find the user instead of nil. solved by checking for an empty
map returned from the db select. login validation now takes place in
the backend
move note validation to backend, fix destroy note, and refactored

note validation is now fully handled by clojure, returning errors
that are displayed by the front-end. spaces dealing the notes were
also refactored to be a bit more concise. permenant deletion of
notes has been fixed
merge current/2

this merge contains fixes for issue #2 and #11