Mark storage test as broken on Solaris 10/sparc64

'test_volume' didn't anticipate the filesystem on Ultrasparc — see
https://cfengine.com/dev/issues/5234
Fix special permissions on Solaris 10/sparc64 and FreeBSD

	1. Not all special bits are supported everywhere. For example,
	trying to set (1|3|5|7)010 will error out on FreeBSD:
	"Inappropriate file type or format". On Solaris it will not, but
	the bit is not set (i.e. 1010 will result in modeoct 100010, and
	thus fail, whereas 4010 will result in modeoct 104010, and thus
	pass). I picked the values so that they work everywhere.

	2. Also fix a BSD conditional nit for getusers() test.
Solaris 9 work + reenabling strftime conversions.

	1. Differentiate suppression meta for Solaris 9/10

	2. After the fix #1598 is merged, %F and %s will be usable via
	the strftime() builtin. Reenable strftime.cf for Solaris 9 and
	HPUX
Suppress some tests on FreeBSD

See:

	1. https://cfengine.com/dev/issues/5261 (link obstructions)
	2. https://cfengine.com/dev/issues/5224 (intermittent failures
	shared with Solaris, plus zombies)
testall: s/%F/%Y-%m-%d/

This will make HP-UX and Solaris X<10 happy, as the equivalent shorthand
conversion doesn't exist there.
RM 4074, 4940: fixups for Solaris and HP-UX in strftime.

This just hacks the format string forwarded to strftime by the
implementation of the strftime in policy language; no change to
strftime() as called by C.
Re-enable strftime acceptance test for HP-UX.
Reworked the strftime() hack to be more extensible.

Added partial support for MS-Win while I'm at it, and make
FnCallStrftime() actually return FnFailure() when it fails.
Moved the hack out into function PortablyFormatTime().
Re-enable strftime acceptance test for MS-Win.
Use fp->name in place of strftime in Log() message.

At @tzz's request, when naming the policy-language function (as
distinct from the underlying raw function for GetErrorStr()'s part) in
a Log() message, use fp->name rather than strftime.
Merge pull request #1598 from ediosyncratic/strftime-port

RM 4074, 4940, 5110: fixups for Solaris, HP-UX and MS-Win in strftime.
Fix missing header on Windows.
Merge branch 'master' of git://github.com/aappilattoq/core

Conflicts:
	tests/acceptance/01_vars/02_functions/strftime.cf
Redmine#5225: do not cache remoteclassesmatching due to class setting side effect
Revert "Fix special permissions on Solaris 10/sparc64 and FreeBSD"

This reverts commit 4ee16ec7ff833778a0f25a44322121d17367af61.

It fails on many platforms in Jenkins, presumably because support for
special permission bits is a bit uneven.
Minor retouch.
Set protocol version to the one negotiated. Will be needed when we have more than one versions inside TLS.
Identification dialog now only needs one roundtrip

Changed identification dialog to send two lines at once from the client
(protocol version and client identity) so that we save one network
roundtrip.

Had to bring back TLSRecvLines() for that purpose (why was it removed in
the first place?), to make sure that no bytes will be lost when
receiving, even if TLS squeezes multiple lines in one record.
Output serverd start message after daemonisation.
Added memmem() replacement in libcompat, and simple tests.