DNSSEC: use only compatible algorithms with NSEC/NSEC3

Key algorithm and used NSEC type must match:

RFC 5155 states, that for compatibility with old resolvers, NSEC3
must be used only with NSEC3 algorithms.

It makes no sense to sign NSEC with NSEC3 keys, because it will make
the validation impossible on NSEC3-unaware resolvers. This is stricter
than what dnssec-signzone from ISC does.

refs #4
Refactored NSEC RR creation.

 - added a debug message to rrset_new()

Refs #4
DNSSEC: Initial solution for chain reconnection

Refs #4
Simplyfied chain reconnection by skipping nodes

- Non auth nodes and empty nonterminals are also skipped
- Kept created API functions in changesets.h, they might be handy

Refs #4
Small fixes.
Post-merge changes.
DNSSEC: check allowed algorithms for signing

Also removes the restriction that NSEC3 only algorithms can
be used only with NSEC3.

refs #4
add missing test files into Knot.files
DNSSEC: fix crash when the zone file is not available but journal exists

refs #4
DNSSEC: fix crash when key is not available when veryfing RRSIG

The RRSIG is removed in this case.

refs #4
Removed dbg message.
DNSSEC: removed redundant rollback calls.
DNSSEC: added missing dname frees.
knot_memdup: define as static
knot_binary: add knot_binary_from_string() into API
ECDSA: fix tests on machines without ECDSA
DNSSEC: store RDATA for public key in key structure
DNSSEC: keep DNSKEY RDATA in knot_dnssec_key_t structure

We need the public key data to manage the keys in the zone.

refs #4
libknot/rrset: add knot_rrset_new_from() into public API

Allows to create a new emtpy RRSet given another RRSet as a template.
DNSKEY: DNSKEY management in zone signing

Changes in DNSKEYs have to be resigned as well. This is not
happening yet.

refs #4