Refactor User.to_sensible_json to a presenter

This didn't belong in the model, and we're about to add organisations to this code so it seems helpful to tidy it up first.

It also means we don't generate a JSON string to then parse it back to a Ruby structure in PermissionUpdater.