Merge pull request #23 from mkaravel/feature/setops

[overlay][P/P, L/L] replace BOOST_AUTO_TPL by the exact type
[distance] add unit tests for all geometry combinations
[test][algorithms] add new unit tests for distance in Jamfile
[strategies][distance] add cartesian strategy for point-box and box-box distance computation
[distance] add distance(box, box) detail implementation
[distance] add implementation of distance(point, geometry); most of the origina code was in algorithms/distance.hpp; the point-box combination was added;
point_to_range takes only one strategy now; all intermediate distance computations done with comaprable distances (conversion happens at the end);
[strategies][distance] add class to convert a distance result from comparable to regular distance result if needed;
add implementation of this for cartesian coordinates (applies sqrt);
[distance] add helper classes for choosing default strategies
[distance] add distance code for single-to-multi geometry combinations and dispatch specializations;
some of the code in this file originated from multi/algorithms/distance.hpp
[distance] add distance code for multi-to-multi geometry combinations and dispatch specializations;
some of the code in this file originated from multi/algorithms/distance.hpp
[distance] segment-to-segment distance computation
[distance] add implementation for distance computation between a range and a segment or a box
[distance] add implementation for distance computation between a polygon and a segment or a box
[distance] segment-box distance computation
[distance] base cose for distance computations using the R-Tree
[distance] implementation for distance(multi-point,range)
[distance] dispatches for various geometry combinations with the point-point strategy;
the point-point strategy is not the natural distance strategy for these geometry pairs;
the dispatches have been added for backward compatibility;
[test][distance] add common code for distance unit tests
[comparable distance] add free function for comparable distance that takes a strategy
[multi][distance] move multi/algorithms distance code under algorithms/ keep the file as a placeholder and include algorithms/distance.hpp