Fixed unneeded memcpy on it self in zio_ready(zio_t *zio).

In zio_ready(), under some condition a blockpointer is copied into
itself, i.e. bptr_t bp1, *bp2;  bp2 = &bp;  bp1 = *bp2;
This produces a memcpy overlap error in valgrind.

The real question of course is, if trying to copy the blockpointer
into itself is a legitimate operation here.  Not sure.

Call tree for the offending copy:
==00:00:00:02.705 27867== Source and destination overlap in memcpy(0x1004b94f8, 0x1004b94f8, 128)
==00:00:00:02.705 27867==    at 0x10016AD73: memcpy (mc_replace_strmem.c:523)
==00:00:00:02.705 27867==    by 0x1000B954C: zio_ready (zio.c:919)
==00:00:00:02.705 27867==    by 0x1000BE103: zio_next_stage (zio.c:2024)
==00:00:00:02.705 27867==    by 0x1000B9192: zio_wait_for_children (zio.c:846)
==00:00:00:02.705 27867==    by 0x1000B93BA: zio_wait_children_ready (zio.c:874)
==00:00:00:02.705 27867==    by 0x1000BE38A: zio_next_stage_async (zio.c:2073)
==00:00:00:02.705 27867==    by 0x1000B9111: zio_nowait (zio.c:833)
==00:00:00:02.705 27867==    by 0x10009B7D8: vdev_label_read (vdev_label.c:168)
==00:00:00:02.705 27867==    by 0x10009C69D: vdev_label_read_config (vdev_label.c:336)
==00:00:00:02.705 27867==    by 0x100096FD3: vdev_validate (vdev.c:1009)
==00:00:00:02.705 27867==    by 0x100096F80: vdev_validate (vdev.c:999)
==00:00:00:02.705 27867==    by 0x100096F80: vdev_validate (vdev.c:999)
==00:00:00:02.705 27867==
Fixed potential NULL pointer dereference in zap_lookup_norm()

In zap_lookup_norm(objset_t *os, uint64_t zapobj, const char *name,
    uint64_t integer_size, uint64_t num_integers, void *buf,
    matchtype_t mt, char *realname, int rn_len,
    boolean_t *ncp)

strlcpy() is called with a size of 0, which results in undefined behavior.

Calltree (example):
==00:00:00:07.711 27867== Invalid write of size 1
==00:00:00:07.711 27867==    at 0x10016AFFA: strlcpy (mc_replace_strmem.c:373)
==00:00:00:07.711 27867==    by 0x1000AF568: zap_lookup_norm (zap_micro.c:683)
==00:00:00:07.711 27867==    by 0x1000AF428: zap_lookup (zap_micro.c:645)
==00:00:00:07.711 27867==    by 0x10007A78B: dsl_pool_open (dsl_pool.c:92)
==00:00:00:07.711 27867==    by 0x100083AB0: spa_load (spa.c:1124)
==00:00:00:07.711 27867==    by 0x100084538: spa_open_common (spa.c:1456)
==00:00:00:07.711 27867==    by 0x100084783: spa_open (spa.c:1528)
==00:00:00:07.711 27867==    by 0x100008404: main (zdb.c:2399)
==00:00:00:07.711 27867==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==00:00:00:07.711 27867==
==00:00:00:07.711 27867==
==00:00:00:07.711 27867== Process terminating with default action of signal 11 (SIGSEGV)
==00:00:00:07.711 27867==  Access not within mapped region at address 0x0

Note that zap_lookup() *always* calls zap_lookup_norm() with a zero
size argument, which is correct.  So zap_lookup_norm() must not depend
on implementation-defined behavior regarding strlcpy with zero size.
Fix a missing cv_init() cv_destroy() pair in spa_add() / spa_remove().

spa_add() does not fully initialize the spa structure, resulting in
undefined behavior due to uninitialized memory later on.

Calltree at time of crash
==00:00:02:46.240 31470== Process terminating with default action of signal 4 (SIGILL)
==00:00:02:46.240 31470==  Illegal opcode at address 0x10023291D
==00:00:02:46.240 31470==    at 0x10023291D: __abort (in /usr/lib/libSystem.B.dylib)
==00:00:02:46.240 31470==    by 0x100232980: abort (in /usr/lib/libSystem.B.dylib)
==00:00:02:46.240 31470==    by 0x1000A21E8: cv_wait (kernel.c:348)
==00:00:02:46.240 31470==    by 0x10000D65B: ztest_suspend_monitor (ztest.c:3174)
==00:00:02:46.240 31470==    by 0x10017D455: _pthread_start (in /usr/lib/libSystem.B.dylib)
==00:00:02:46.240 31470==    by 0x10017D308: thread_start (in /usr/lib/libSystem.B.dylib)

here the conditional variable spa->spa_zio_cv is used uninitialized,
causing cv_wait to fail and the program to raising SIGABORT.
Fixed missing #ifdef __APPLE__ around change name type in call to zfs_dirent_lock().

The call to zfs_dirent_lock() in zfs_create() was missing an
replacing the "char *name" parameter with Apples"componentname_t *cnp".
This triggered a kerel panic on file create.

panic trace:
0x21b455 <panic+445>:	mov    0x8011d0,%eax
0x2a8ab2 <kernel_trap+1530>:	jmp    0x2a8ace <kernel_trap+1558>
0x29e9a8 <lo_alltraps+712>:	mov    %edi,%esp
0x4d614177 <zfs_dirent_lock+95>:	movzbl (%eax),%eax
0x4d6240ca <zfs_create+542>:	mov    %eax,-0x28(%ebp)
0x4d624820 <zfs_vnop_create+259>:	leave

0x4d614177 is in zfs_dirent_lock (/Users/bj/new-mac-zfs-bjoka/usr/src/uts/common/fs/zfs/zfs_dir.c:197).
192			ASSERT(name[cnp->cn_namelen] == '\0');
193	#endif
194		/*
195		 * Verify that we are not trying to lock '.', '..', or '.zfs'
196		 */
197		if (name[0] == '.' &&
198		    (name[1] == '\0' || (name[1] == '.' && name[2] == '\0')) ||
199		    zfs_has_ctldir(dzp) && strcmp(name, ZFS_CTLDIR_NAME) == 0)
200			return (EEXIST);
201

0x4d6240ca is in zfs_create (/Users/bj/new-mac-zfs-bjoka/usr/src/uts/common/fs/zfs/zfs_vnops.c:1674).
1669	#ifndef __APPLE__
1670			if (flag & FIGNORECASE)
1671				zflg |= ZCILOOK;
1672	#endif
1673
1674			error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg,
1675			    NULL, NULL);
1676			if (error) {
1677				if (strcmp(name, "..") == 0)
1678					error = EISDIR;