Integration test framework

Allows us to write tests like:
```c#
[TestMethod]
public void UnzipTestFilesWithSelfDestruct()
{
    DirectoryInfo directoryInfo;
    using (var folder = UnzipTestFiles())
    {
        directoryInfo = folder.DirectoryInfo;
        Assert.IsTrue(directoryInfo.Exists);
        AssertFileCount(directoryInfo, 3340);
    }
    directoryInfo.Refresh();
    Assert.IsFalse(directoryInfo.Exists);
}
```