Makes email duplication validation independent of username.

Oh, and it also ignores a nil value. You have no idea how frustrating it
was to see it take two nil values and rub them together and say "A horse
is a horse" and throw them in my face.

I also note that it was storing "" as an email sometimes, adding to the
fun time frustration hour.
Adds functionality to change your username.

This functionality affects the User controller and model and view.

In the model, I have replaced the behavior of the edit_user_profile
badness to just add freaking errors to self whenever something is
invalid instead of reporting a string since those errors contain
consistent error messages anyway. It does not return. I will reflect
this in another commit by changing the name to something more
appropriate.

Which means in the model, I have added messages to validations that for
some reason did not have one before. We should put those strings all in
one place eventually for sanity.

In the controller, I updated the, um, update action to look for errors
like a normal controller action would and respond naturally. Some
wonkiness occurs.

This wonkiness is a result of trying to change the field that the
current url is built from. Therefore, let's use the canonical user,
current_user, whenever possible. When redirecting, we have changed the
canonical user, therefore use @user to generate urls.

That wonkiness is in the view. Here, @user is the current image of the
user and current_user is the true user (or preimage, I guess.) So, using
current_user where (honestly, you would expect current_user anyway) you
want to use the stable values and @user when you want the changed fields
is what I've done.

Tests:

Updates tests to reflect changes in error messages.

Adds four acceptance tests to edit_profile_test:

* it updates your username (check that a username can simply be changed)
* it does not update your username if the chosen username exists (make
    sure that you cannot steal somebody else's name)
* it redirects to your new name when you change your username (the
    redirect should take you to your profile, which has a different url
    now)
* it does not allow you to change your username to something invalid (do
    not allow special characters in your name)

Adds one unit test:

* username can be changed (checks that the edit_user_profile method,
    which will become update_profile! actually updates the username with
    the given parameter)
Updates name of edit profile action.

The old name made its destructive behavior unclear and its mutation.
This now has the common update_ prefix and a bang to indicate this. It
is far more instructive than edit_user_profile since edit is an action
and what is that?! It's update everywhere else! Who wrote this, an
alien? :D :D :D
Changing check for nil to check for blank
Changing a check for nil or empty to just check for blank
Don't require mocha; this removes the deprecation warnings
Show multiple error messages when there are multiple errors saving a profile edit

Reuse the errors partial from the signup process; make the message more general.
Since an unsuccessful profile update shouldn't ping hubs, there's no need to use a VCR cassette in tests of unsuccessful profile updates
Merge remote-tracking branch 'origin/feature/change_username'

Conflicts:
	test/models/user_test.rb