Support legacy mountpoints

Bringing in illumos's manual_mount() and manual_unmount() allows us
to support mountpoint=legacy. As in FreeBSD, manual_mount calls a
new function zmount(), which has the same arguments as illumos's
mount() function. zfs_mount() in libzfs now calls zmount() as well.

manual_mount() is called if the name of the binary is 'mount_zfs',
and we hardlink 'mount_zfs' to the standard 'zfs' command. This
differs from upstream use of the name 'mount' because OS X will
pass through calls to mount -t somefs to mount_somefs.

zfs_mount_args is moved out of zfs_context.h and into its own file
so that zmount() can live in libspl without needing to include the
entire zfs_context.h.

zfs_mount_args is expanded to allow zmount to pass in the option
string to the kernel for processing (not implemented here). Also,
zfs_mount_args now includes both a OS X flags argument and an
mflag argument with the illumos-compatible flags. This may be
desirable if we want to keep the logic in the kernel for
converting illumos-compatible flags like MS_OVERLAY and MS_RDONLY
into their OS X counterparts, while at the same time leaving open the
possibility of setting some OS X flags in userland.

Fix a memory leak where osname was not being in zfs_vfs_mount().