Profile edit

This should be able to handle both validation and data errors, and handle validation errors by surfacing them politely to the user.