Add functional tests for "kpm pack"

Please help to review functional tests for `kpm pack` @Eilon @davidfowl @lodejard @Praburaj.

I made utils that can create fake projects (directory tree) based on a directory structure represented by JSON. We can also represent an expected output directory structure with JSON and verify whether the actual output matches the expected output.
`Path.GetRandomFileName()` cannot guarantee that the file doesn't exist. I want to avoid collisions, although they are rare.