Hacking validation to work well with custom getter

The recent commits allow implementation of the following pattern:

- assign a string to phone field (user.phone = 'abc')
- user.phone will result in original string if it is not a plausible phone, or in formatted phone
- after validation user[:phone] will have original string, if phone validation has failed, or normalized phone if it was successful.

The above pattern results in sane validation behavior (show old input if it is invalid), returns nicely formatted phone numbers and also saves normalized phone numbers in database.

How:
- add the following to User

  validates_plausible_phone :phone, default_country_code: 'US'
  after_validation :normalize_phone

  def phone
    nil if self[:phone].nil?
    phone = PhonyRails.normalize_number(self[:phone], default_country_code: 'US')
    if Phony.plausible?(phone)
      phone.phony_formatted format: :national
    else
      self[:phone]
    end
  end

protected

  def normalize_phone
    if errors[:phone].nil? && self[:phone].present?
      self.phone = PhonyRails.normalize_number(self[:phone],
          default_country_code: 'US')
    end
  end

- don't use phony_normalize - it normalizes before validation, so validation is not sane