added AJAX validation

while the server response is the same, we save ourselves the full page
refresh which allows for better UX

(using Browserify incurs a fair amount of infrastructure, but it
encourages modularity and also means we don't have to worry about asset
management too much)