Check for unique usernames.
Add validation message for username.
Refactor the user view models

It turns out the deriving from the model itself is more logical and
works better than having a view model that is composed of the model.
Factor out the useless view models.
Remove final vestiges of previous design flaw.
Go back to using the models directly.
fix path comments
Get ready to derive.
More minor tweaks.
Add controller base for view models.

Many domain objects will require a derived view model.  This class
should be usable as a controller for them (base class of the controller,
that is).