Edit profile page with password change fields

Possible improvements:
- Redirecting back to a page other than the referer
- Choosing layouts to match the calling site
This is a duplication of the validation in `ContactInfo`.  Can you (without introducing a circular dependency) do something like the following:

```
class ContactInfo

  # maybe not needed since we don't instantiate ContactInfo directly, but ok to leave.
  validates :type, presence: true, inclusion: { in: ContactInfo.subtype_map.keys }

  def self.subtype_map
    @@subtypes ||= {
      EmailAddress.type => EmailAddress
    }
  end

  def self.new_from_type(type, args*)
    ContactInfo.subtype_map[type].new(args)
  end

  # a different factory method without using subtype_map 
  # def self.new_from_type(type, args*)
  #   case type
  #   when EmailAddress.type
  #     EmailAddress.new(args)
  #   else
  #     raise IllegalArgumentError
  #   end
  # end

end

class ContactInfosCreate
  lev_handler
  ...

  def setup
    @contact_info = ContactInfo.new_from_type(contact_info_params.type)
    @contact_info.user = caller
  end

  def authorized?
    OSU::AccessPolicy.action_allowed?(:create, caller, @contact_info)
  end

  def handle
    @contact_info.save
    transfer_errors_from(@contact_info, {scope: :contact_info}, true)
    run(SendContactInfoConfirmation, @contact_info)
    outputs[:contact_info] = @contact_info
  end
end
```