Split tests into individual files
Adds `dissoc`, fixes PHM length bug

PHM length wasn't being incremented in the event of a hash collision,
because something was already there. PHMs now have a length attribute
that keeps track of whether or not an `assoc` or `dissoc` actually
changed the PAM at the leaf.