Add NVRAM class for generating nvram files
zvsh_test: Add tests for NVRAM class
Add docstring to ZvArgs class
Add some helper funcs for handling runtime files

`_get_runtime_file_paths` is used to generate the paths to the nvram,
manifest, boot, stdout, and stderr files (based on the working
directory).

`_check_runtime_files` checks if any of these files already exists and
raises a RuntimeError if any do exist. This is necessary because zvsh
needs to write these files to the specified working dir (which can be a
temp dir) and should not overwrite files without warning.
Add a test for _check_runtime_files
Add `mock` to test-requirements.txt
zvsh_test: Fix pep8 violations
zvsh: Add `run_zerovm` function

This replaces the old implementation of ZvShell. This is still a work in
progress and there are still tests needed. As of now, most of the file
generation is well tested, but the entire workflow is not. We need some
good integration tests for this.

The gdb path through zvsh is unaffected by this change.
zvsh: Clean up imports
zvsh: Change zvsh run workflow to use run_zerovm

The main zvsh "run" workflow no longer uses the ZvShell class and has
been replaced is a better-tested implementation.

The "gdb" path remains unchanged.
zvsh: Update a TODO comment