Optimize Set#difference by using Trie#bulk_delete

Implemented Trie#bulk_delete which deletes several entries at once
without creating new temporary Trie objects on every delete operation.
This method is then used in Set#difference in order to its performance.
Optimize Trie#filter by using Trie#bulk_delete

This improves performance of Hash#filter and Set#filter.
Set#filter: Split entry to key+value using Ruby block arguments