Pseudo-milestone: everything compiles.

dmu_objset_find_spa() recursive iterator function has been superceded
by dmu_objset_find_dp().  The arguments of each are:

	dmu_objset_find_spa(spa_t *spa, const char *name,
	    int func(spa_t *, uint64_t, const char *, void *),
	    void *arg, int flags)

		callback is called as func(spa, obj, objname, flags)

	dmu_objset_find_dp(dsl_pool_t *dp, uint64_t ddobj,
	    int func(dsl_pool_t *, dsl_dataset_t *, void *),
	    void *arg, int flags)

		callback is called as func(dp, ds, arg)

The new (_dp) function gives the callback the dataset which has been
obtained with dsl_dataset_hold_obj.  Each instance of the callback,
therefore is surrounded by a dsl_dataset_hold_obj/dsl_dataset_rele pair.

NOTE: zvol_create_minors() is currently commented out until I can re-work
it to use the new dmu_objset_find_dp interface.

---

The dsl_dataset_clone_swap() function is gone and has been replaced with
the pair dsl_dataset_clone_swap_(check|sync)_impl().