Implement Username recovery

Well, the login and forgot username tests in isolation use a created user.

I care *more* about the full workflow, i.e I can register, reset my username/password, login, and see my profile.

I broke each piece out into separate tests so if the full workflow breaks we'll have an idea of where, but I still wanted to make sure everything integrates together properly.

If you think it's a bad idea, I can remove the "test of tests"