(Breaking change) Implement user supplied signature. Add error detection when opening an existing file: same signature, same uniqueness, no map vs set conflict. Add test cases.