new exercise binary-search

This requires re-implementing a function from the standard library, much like the hexadecimal exercise.  I think this is in the spirit of the Ruby solution as well.  Since it's pretty easy to look at the code in the standard library and see the solution, I added another requirement of interpreting the result.  This is also somewhat like the way the HandleErrors function of hexadecimal requires interpreting the error result.  Also like that function, the interpretation function is one that is only for exercise purposes and is not something that would appear in production code.  This time I added a comment to that effect in the test program.  Finally, the benchmark is fun, to see that run times only go up by a small amount even as data sizes go up exponentially.