New DSA verification code

https://github.com/pornel/Sparkle-fork/issues/24

* Needs security review
* Tests
Simplify constructor. Setting self to nil is weird. Simply check if secKey is NULL in verifyStream: and return NO.

    - (instancetype)initWithPublicKeyData:(NSData *)data
    {
        if ((self = [super init]) && data.length) {
            SecExternalFormat format = kSecFormatOpenSSL;
            SecExternalItemType itemType = kSecItemTypePublicKey;
            CFArrayRef items = NULL;

            OSStatus status = SecItemImport((__bridge CFDataRef)data, NULL, &format, &itemType, 0, NULL, NULL, &items);
            if (status == errSecSuccess && items && CFArrayGetCount(items) == 1
                && format == kSecFormatOpenSSL && itemType == kSecItemTypePublicKey) {
                self.secKey = (SecKeyRef)CFRetain(CFArrayGetValueAtIndex(items, 0));
            }

            if (items)
                CFRelease(items);
        }

        return self;
    }