zvshlib/zvsh: fix execution workflow

There are two general execution paths for zvsh:

    - running a nexe directly
    - mounting one or more tar images (thus creating an in-memory
      filesystem)

The code which handles manifest file generation, etc. (which was
rewritten in recent history) did not support running a nexe directly.
This fixes that.
tests/zvsh_test: update tests for nexe execution
tests/zvsh_test: tests for _get_manifest_and_nvram