Extracting user, person, profile creation

Our user create and update was getting complicated. The complication
also impacted our tests (which were slow).

Closes ndlib/planning#180