Bugfix: Initialize the CHAP-Password with an empty string

Otherwise, since CHAP-Password is an octet type, having a password that
begins with "0X" will cause problems ("pairmake: Non-hex characters at
..."). Since we copy over the real password anyway one line later and
properly CHAP-scramble it, we can simply start with an "empty" password
to initialize the attribute.
radauth_test_threaded: make number of threads configurable via -n
radauth_test_threaded: print "." for success, "X" for fail
Refactor the "construct packet, send, wait for reply" part

This is a preparation to adding accounting packet support soon. Thus
sending and receiving packets should be independent of the credentials.

This refactoring specifically consists of the following steps:

* Split out the part where credentials are added (rad_cb_credentials)
* Introduce a callback list structure: If a user-supplied callback is
  found (e.g. rad_cb_userparse), this must be called after adding the
  credentials. The non-static method signatures are *not* affected by
  this change.
* Add an "acctport" field for the config
* Decide on the type of the packet which port to use (e.g. 1812 / 1813)
Factor out the server looping part
Add rad_acct_* interface
Add some docs for the accounting mechanism
Merge accounting functionality

* accounting:
  Add some docs for the accounting mechanism
  Add rad_acct_* interface
  Factor out the server looping part
  Refactor the "construct packet, send, wait for reply" part
Amend debug statements to not include port number

Otherwise the debug output for accounting calls looks strange as if the
auth port would be used.
Be more rigid with gcc error messages
Increase buffer sizes

There might just be really long hostnames or secrets...
Move var definition to beginning of send_recv()
Be really careful about socket storage structs

... and to catch such cases in the future, add GCC's
-fstack-protector-all and glibc's _FORTIFY_SOURCE=2.
Pass a VALUE_PAIR** to valuepairs callback function

It seems I have mis-read the API for userparse - it needs a pointer to
the first list item, i.e. &request->vps -- Adding other items worked
with the old version, but adding pairs might leak memory. This should be
fixed now.

WARNING: Even though this does not change the ABI, it *does* change the
contract for the callback function: A callback function must now receive
the argument and cast it to (VALUE_PAIR **).
Pass char pointers, don't copy user data

This fixes a segfault when you pass a NULL argument as either username
or password.
Remove unused var max_fd

This was used in the former select() approach, but is obsolete now.
Fix file descriptor leak when using temp dict

mkstemp() will already return a valid file descriptor which we can
simply fdopen() then. The fd is not dup'ed, so we do not leak a file
descriptor any more.