Add binary_find algorithm

Added binary_find algorithm.
Changed upper_bound, lower_bound, binary_search to use it
Add partition_point algorithm and test
Minor fix in binary_search

Changed it to use read_single_value instead of
* operator
Merge pull request #125 from roshanr95/partition_point

Partition point