Protocols: Added StartTLSProtocol.

This is a protocol that starts out in clear text, but supports
the option of switching to SSL/TLS later.
FTP: Prepare for supporting AUTH TLS (RFC 4217).

Fixes some of [bug 4594].
Merge branch 'patches/pike8.0' into patches/bug4594

* patches/pike8.0: (230 commits)
  Pike 8.0: More SSL/TLS API changes.
  FTPS: Fixed support for Pike 8.0.
  Roxen: Use the current names for the ASN1 classes.
  SNMP: The LDAP private ASN.1 classes aren't available in Pike 8.0.
  SNMP: The fields tag and cls are variables in Pike 8.0.
  Pike 8.0: More SSL changes.
  Pike 8.0: Improved robustness when upgrading old certs.
  Pike 8.0: Upgrade old automatic X.509v1 certs to X.509v3.
  Pike 8.0: Fixed SSL port binding with new API.
  Pike 8.0: Take advantage of the improved SSL support.
  Pike 8.0: Add support for some new SSL features.
  Pike 8.0: #if efun() is obsolete since 10 years back.
  Pike 8.0: String.Buffer contains a sprintf().
  Pike 8.0: Unset variables are UNDEFINED.
  Roxen 5.4.1.
  ABS: List the pending call_outs.
  Fix warnings generated by Pike 8.0.
  DB browser: add support for custom DB field formatters in owning modules.
  DBManager.module_table_info: Consider all module entries from the DB.
  Added transliteration module.
  ...

Conflicts:
	server/base_server/roxen.pike
FTP: Splitted send() into low_send() and send().

This is needed to implement AUTH TLS without introducing races.

Prepares for fixing [bug 4594].
FTP: The ftp server is always the server side of TLS.

Fixes RFC 4217 7.
FTP: Support AUTH TLS (RFC 4217).

This implements support for switching the ftp control connection
to SSL/TLS (aka STARTTLS).

Fixes [bug 4594].
FTP: Added configuration flag to require AUTH TLS.
FTP: Support ending the TLS control connection with REIN.

RFC 4217 13:
When this command is processed by the server, the TLS
session(s) MUST be cleared and the control and data
connections revert to unprotected, clear communications.
FTP: Fixed typo in PBSZ error message.
FTP: Fixed SSL data connection.

The SSL/TLS handshaking for the data connection now seems to work.

Also adds compatibility with the old AUTH modes "SSL", "SSL-P" and "TLS-P".

Note that the old "AUTH SSL" and "AUTH SSL-P" modes imply SSL/TLS for the
data connection in active mode, but not in passive mode...

Verified to interoperate with the Linux ftp client version 0.17.
FTP: Extended AUTH TLS config option.

It is now possible to disable the support for AUTH SSL/TLS.
Merge branch 'patches/bug4594' into devel

* patches/bug4594:
  FTP: Extended AUTH TLS config option.
  FTP: Fixed SSL data connection.
  FTP: Fixed typo in PBSZ error message.
  FTP: Support ending the TLS control connection with REIN.
  FTP: Added configuration flag to require AUTH TLS.
  FTP: Support AUTH TLS (RFC 4217).
  FTP: The ftp server is always the server side of TLS.
  FTP: Splitted send() into low_send() and send().
  FTP: Prepare for supporting AUTH TLS (RFC 4217).
  Protocols: Added StartTLSProtocol.
FTP: Fixed bug in MLSD/MLST handling.

It failed when there was an active content-type module.

Fixes [bug 7229].
Merge branch 'patches/bug7229' into devel

* patches/bug7229:
  FTP: Fixed bug in MLSD/MLST handling.
FTP: Allow FEAT before login.

Make sure that clients can check the availability of features
before login, so that they know that they can try AUTH TLS.

Makes lftp happier.
FTP: Default to PROT P for FTPS.
FTP: Added support for the CCC command.
Merge branch 'patches/bug4594' into devel

* patches/bug4594:
  FTP: Added support for the CCC command.
  FTP: Default to PROT P for FTPS.
  FTP: Allow FEAT before login.