Authors ordered by first contribution.

SungMin Ha (ishtar, zen.isis@gmail.com)
Hyuk Hur (http://hyukhur.tumblr.com)

Cliff Rowley (cliffrowley@gmail.com)
  - Missing return value in formatInOriginalFormat:regionCallingFrom:error
  - Compatibility with iOS versions prior to 6.x

Aaron Wojnowski (aaronwojnowski@gmail.com)
  - Remove extra r from the countryCodeFromRegionCode method name.
  
stonyw
  - Handle char @ when normalize any strings, eg email

Yosi Taguri (http://ahhhpah.com)
  - Failed tests are down to 18 for [ AsYouTypeFormatter ]

Nils Hayat (http://nilsou.com)
  - Help to update cocoapods
  - Added -[NBPhoneNumberUtil parseWithPhoneCarrierRegion:error:] to parse a number using the phone's carrier country code
