tests: introduce pkd_hello

Introduce a sample public-key testing daemon which uses libssh to the 'pkd'
test directory, and add supporting code for cycling through various client
combinations of different key exchange, cipher, and MAC algorithms.

The goal of the 'pkd_hello' test is to make it really easy to test
interactions between non-libssh clients and a libssh-server, and to provide
a starting point for testing new implementations for key types, ciphers,
MACs, and so on.  The thinking is that testing a new algorithm should be
as simple as adding a new line for it in the PKDTESTS_* lists.

Macros are used to generate the tests and support code for a couple of
clients -- here, OpenSSH and dropbear are supported for a first cut.  If
binaries are found for these clients, their test lists will be enabled;
when binaries are not found for a given client, those tests are skipped.

Tests can also be run individually to help with tracking down things
like signature bugs that may take many iterations to reproduce.

Each test logs its stdout and stderr to its own file, which is cleaned up
only when a test succeeds.  For failures, those logs can be combined with
verbose libssh output from pkd itself to start debugging.

Some example usages:

  pkd_hello
    Run all tests with default number of iterations.

  pkd_hello --list
    List available individual test names.

  pkd_hello -i 1000 -t rsa_ecdh_sha2_nistp256
    Run only the rsa_ecdh_sha2_nistp256 testcase 1000 times.

  pkd_hello -v -v -v -v -e -o
    Run all tests with maximum libssh and pkd logging.

Included now in the tests are passes for the new SHA2 HMAC support, as
well as all existing kex, cipher, and MAC algorithms.

Signed-off-by: Jon Simons <jon@jonsimons.org>