Updated unique validation directives/registration page

Updated the unique validation directives (email/username) so that the
error that it outputs is bound to the 'unique' key. Also removed the
noEmail/noUsername validity in favor of using the default 'required'
attribute that comes in all browsers.

This required updating the profile page to adjust for the changes.

Also updated the registration page to make use of the new unique
validation directives as well as updating the password/confirmation
matching validation. This didn't require it's own directive because it
could be easily checked by just checking the model values against each
other. The ng-touched validator was also used to keep the errors from
popping up till the user has interacted with the controls at least once.