refactor libcollections as part of collection reform

* Moves multi-collection files into their own directory, and splits them into seperate files
* Changes exports so that each collection has its own module
(that is, collections::treemap::{TreeMap, TreeSet} => collections::treemap::TreeMap, collections::treeset::TreeSet)
* Removes underscores from module/file names to provide more uniform naming
* Renames PriorityQueue to BinaryHeap
* Miscellanious fallout fixes

[breaking-change]
Hm this is also an interesting convention, could you elaborate a bit here on the rationale?