Make ARC compatible, refactor into a category

I believe using a category on UIDevice makes more sense (as it so heavily relies on the device's name). Also I have refactored some of the code to be a bit simpler to follow and be ARC compatible. Additionally added support for the new iOS 6 changed ABAddressBook which requires users approval.

This could probably further improved by making the call also be block based with a completion handler (to remove the blocking nature for the duration of the approval).