add deepCleanForDefaults in NSUserDefaults categories of NSArray & NSDictionary
add canonicalNetworkUnreachableError to return NSError* with a proper iOS networkUnreachable code
add NSDictionary+Mutable category for adding/changing an item in NSDictionary