Updates storagedriver tests to better test directory trees

Replaces random flat file names with random nested file hierarchies, and fixes the inmemory and filesystem drivers after uncovering some bugs with these tests.
Could you check that when the dir paths are created, we normalize them properly to have a trailing slash?

It might be better to have all paths start with "/", then end without slash, whether its a directory or not. Then a path normalization function can be consistent between file and dir.