Fix double insert error

When we have tls = ${tls}, we should *copy* the section,
instead of adding it as a reference.  When it's added as a
reference, it's inserted into the parents linked list of
children.  Having multiple references to the same section means
that the linked lists get completely screwed up.
Be more careful in name2_cmp
Clean up sub_find_name2

It turns out we don't insert ourselves into the name2 tree.
When we don't find (name1, name2) in the name2 tree, we have to
check if *we* are the thing being looked for
Move assertion.  If a thread is still alive, the request is alive
Only complain once for ignored modules
Always free sock->ssn for TLS listeners
Don't stop the thread pool if it wasn't started
We don't need to know about virtual modules being loaded
Expose memory_report in mainconfig
Note when we clean up requests on exit

So we can tell what's going on.  But only do this when using -M,
so that normal exits don't have 100's of "cleaning up" messages
On exit, do the following:

mark all requests as STOP.  Clean up ones which are stopped.

If we have child threads
	wait for them all to exit
	if we want a memory report, walk the requests again

The second pass thru walking the requests should clean up all
requests which were running in a child thread
Expose tls_server_conf_free() and use it for home->tls

So that home servers don't leak memory on exit
Return correct code from delete callback
Be more descriptive with error messages on exit

when cleaning up requests
Documentation on delete order
Revert "Expose tls_server_conf_free() and use it for home->tls"

This reverts commit 7c5a3730b5ba8bdac35ad43fe735a44ffefd55c8.

It's the wrong fix
Use talloc destructor for tls_server_conf_free
One more destructor for conf_free
Prefer IP_PKTINFO to IP_RECVDSTADDR, if both are defined
scan warnings for unused assignments