Don't overwrite creation time if was previously set by make_create_timespec

smb2_create calls dos_mode() after calling SMB_VFS_CREATE_FILE(), as a
result the creation time as set by make_create_timespec() is always
overwritten.

Add a check to dos_mode() that tests for st_ex_calculated_birthtime ==
true and only then update the creation time with the value from the
DOS attribute xattr.

Signed-off-by: Ralph Boehme <rb@sernet.de>
New VFS module vfs_apple

This module provides enhanced compatibility with Apple SMB clients and
interoperability with a Netatalk 3 AFP fileserver.

The module intercepts the OS X special streams "AFP_AfpInfo" and
"AFP_Resource" and handles them in a special way. All other named
streams are deferred to vfs_streams_xattr.

The OS X client maps all NTFS illegal characters to the Unicode
private range. This module optionally stores the charcters using their
native ASCII encoding.

Finally, open modes are optionally checked against Netatalk AFP share
modes.

The "AFP_AfpInfo" named stream is a binary blob containing OS X
extended metadata for files and directories. This module optionally
reads and stores this metadata in a way compatible with Netatalk 3
which stores the metadata in an EA "org.netatalk.metadata". Cf
source3/include/MacExtensions.h for a description of the binary blobs
content.

The "AFP_Resource" named stream may be arbitrarily large, thus it
can't be stored in an EA on most filesystem. ZFS on Solaris is an
exception to the rule, because it there EAs can be of any size and EAs
are first-class filesystem objects that can be used with normal file
syscalls like open(), read(), write(), fcntl() asf. This module stores
the AFP_Resource stream in an AppleDouble file, prepending "._" to the
filename. On Solaris and ZFS the stream is optionally stored in an EA
"org.netatalk.ressource".
Fix apple_unlink()
Fix broken metadata xattr removale
stating not existing stream should return ENOENT, should it?
Use is_afpXXX_stream() functions
Add some debug messages
Several fixes

- lstat vs stat wasn't differentiated
- use convert_uint32_t_to_time_t() and convert_time_t_to_uint32_t()
Initialize AppleDouble magic and version fields
Remove ad_pack(), it's called in ad_set() anyway