correct generic bounds on comparable types; add List.binarySearch(getKey, key) and BinarySearchResult to wrap cryptic int result from Collections.binarySearch