Use 2-3 trees

This change uses balanced 2-3 trees as the underlying map implementation to change expected bounds to worst case bounds. This seems to give a slight improvement in the performance of ps-in-ps.