Add Support for Certificates, Identities and Keys

Let me first say sorry for such a large pull request, but I needed read access to certificates, identities and keys which made this into a fairly large change set.  To do this, this commit it moves some functionality from Keychain::Item to Keychain::Base, then adds in new classes for certificates, identities and keys.  It then defines an ATTR_MAP hash per class since each class has different possible keys according to Appple's documentation.

These changes are backwards compatible and tests pass.  Note that creating and updates certificates, keys and identities is not currently supported.  That would require moving some more code from Keychain::Item down to the base class and generalzing Keychain::Scope#create.  That would be the next logical step, but for my purposes I only needed read access to certificates, identities and keys which these changes accomplish.

Let me know if you have any questions.