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.

It also means we don't generate a JSON string to then parse it back to a Ruby
structure in PermissionUpdater.