Removed HeapKey trait that really wasn't needed after all
Switched from hand-coded checks to using scala's require