Add bisect function

distanceFromIntersectArea wasn't working in some cases (see
issue #3).

The problem was caused by using an unconstrained function minimizer to compute
this distance - which went awry when the solution was near one of the
constraints (i.e completely overlapped or completely disjoint).

Changed to compute this using bisection method. should fix the problem