v3.0: volumes.files becomes a dict, bug fixes

But I could not think up anything except "one of filename or text shouldn't be None". And it is obvious from assert expression.