be_deep_clone() unconditionally clones all child datasets of a given boot environment
(e.g. zroot/ROOT/default). Also, libbe doesn't provide an API that allows a user to
create a non-recursive boot environment.
These changes implement an API function named _be_create(), which provides the ability to
create a recursive or non-recursive boot environment. The existing be_create* functions
are now proxied through _be_create(), their current behavior is unchanged. One of the
problems with the existing be_create* functions is that they don't expose any notion
that boot environments can be created recursively or not.
The logic used to create a recursive boot environment has been moved from be_deep_clone()
and placed in _be_create().
_be_create() also acquired the logic that was in be_create_from_existing_snap().
This code still needs some massaging. For example, _be_create() should be named something
else. The obvious name is already taken and can't be changed or the existing API will break.
working off r342069