daemon: Provide semantic service parameters to the DiscoveryService interface

In order to implement IPND draft 02 Service Block serialization as TLV,
we need a way to assign semantics to each services' parameters. This is
achieved in the DiscoveryService class by encapsulating a base pointer
to an abstract DiscoveryServiceParam, which is passed to its
constructors instead of the old "key=value" string. The
DiscoveryServiceParam can then be specialized for different service
parameter types, like e.g. an IPServiceParam, which takes an IPv4 or
IPv6 address and a port number, or e.g. an EMailServiceParam, which
takes an e-mail address. These leaf classes encapsulate the concrete
serialization functionality, and must be constructed accordingly in the
respective CLAs.

Since DiscoveryServiceParam childs do not need to know about the used
discovery protocol (resp. protocol version), they provide a transparent
interface to the CLAs, in contrast to the current practice of letting
the CLAs write their (protocol/version dependent) "key=value" parameter
strings themselves. Only when the DiscoveryService is serialized, it
passes the protocol version to the pack() and unpack() methods, which
then serialize for the respective protocol version. This way it is
easily possible to implement additional discovery protocols or protocol
versions in the future.

The usage of pack/unpack functions is preferred here over the shift
operators, since the latter are not able to take any parameters, namely
the discovery protocol version to serialize for/unserialize from. Since
service parameters are usually created by the CLAs, which should not
need to know about the protocol version, we must set the version in
DiscoveryBeacon just before (un)serialization. Using shift operators,
we would then need the DiscoveryServiceParams to be mutable, with
pack/unpack functions this constraint is not given.

The old string-based "key=value" interface for setting the
DiscoveryService parameters is hereby removed, and all current CLAs are
adapted to the new semantic interface.

The new Discovery.h contains definitions related to service discovery
and is split from DiscoveryBeacon.h to prevent circular include
dependencies with DiscoveryService.h.