After a successful login with imap, smb or ftp, the corresponding
user is created in an own database table.
This is needed to make e.g. sharing files with this users work.
The table may be used by several different external user authentication
services.
See the discussion in https://github.com/owncloud/apps/pull/1579
for details on the implementation design.
This patch checks if the relevant functionality is actually available
before using it for authentication:
1. check if function imap_open() exists before using it
2. check if smbclient executable exists during smb auth
3. check if ftp/ftps stream wrappers are registered before
using them for auth
This fixes a crash (white page) that happens when using IMAP authentication
and the IMAP extension is not installed.