Added TBUserDefaults.

TBUserDefaults is like NSUserDefaults except:
 1) the concept of per-user settings is built in;
 2) settings are separated by their desired protection level (in the sense of NSFileProtectionKey)
    and this class is able to handle the situation where the plist is inaccessible; and
 3) the API includes a default value to be returned if the setting is missing.

NSUserDefaults is not used at all as part of the implementation.