[binary_heap] Add item-compare-callable parameter in __init__
[binary_heap] Move helper methods to module-level (private) helper functions

Remove _swap, _shift_up, and _shift_down helper methods, and make them
module-level private helper functions.
[binary_heap] Add heapify function, plus option to init heap from list
[binary_heap] Only allow users to choose between min and max heap
[test_binary_heap] Add test case for heapify function