new Empty Bloom Filter
Create an empty BloomFilter for use as a module serialization filter. When populated with the hashes of values that have been created or deserialized for the module, it can be used to quickly determine if an object with a particular hash value is present in the module's objects. At that point, the module's objects can be inverted to form a map from object to index, cached in the module, and a lookup can then take place. Due to the conservative nature of Bloom filters, sometimes the object will not be found even if the filter indicates the value might be present.
Since each module has a (lazily populated) Bloom filter, and since we also keep track of the union of those filters in each non-leaf module, we're able to first test the union filter, and only if it's a hit do we need to examine the module's local filter (and the module's objects themselves if indicated), or continue searching predecessor modules. If a union filter produces a miss, the module and its predecessors can be ignored, as they can't contain the requested object.
Because we have to compute the union of modules' filters, the filter sizes and count of hash functions must agree, so only this function should be used to create such filters.