Added some comments as requested by @soc

I also added some comments to the constructor of HashTrieSet to emphasize
the fact that not all HashTrieSets are self-contained sets and to explain
why many methods need to keep track of the depth using a level parameter.