binary search can return number if its the middle one
binary search recursively calls inner function
added tests for 3 edge cases