[algorithms][is_valid] use bg::partition to check whether the interior
rings of a polygon (that are disjoint from each other and from the
exterior ring) do not overlap with each other
[algorithms][is_valid] fix bug in collecting ring iterators not
associated with turns; rename overlaps_ring to overlaps_box;
rewrite expand_box and overlaps_box in a more generic way (the
arguments are considered now as generic iterators, not necessarily
iterators or rings);
[algorithms][is_valid] make the visitor for partition more generic
(semantically) so that it fits the semantics of the visitor needed
for partition in the multipolygon case
[algorithms][is_valid] use bg::partition to test whether polygons
(not associated with any turns) do not intersect/overlap each other
[buffer][fix] Mark points in buffered areas as not startable instead of discarding them

Within can have in rare cases a rounding issue. We don't discard this
point, so it can be used to continue started rings in traversal. But
will never start a new ring from this type of points.

This fixes p17
[index] Optimize R*-tree choose_next_node by nearly minimum overlap cost - replace partial_sort() with nth_element() and sort()
[index] Replace partial_sort() with nth_element() in R*-tree redistribute_elements.
[index] Change the condition and asserts in R*-tree redistribute_elements nth_element
[algorithms][buffer] fix header for inclusion of disjoint: it is
the point-box and not the box-box version that is needed; also
the call to disjoint is not done via the free function but rather
using the disjoint dispatch struct
[algorithms][detail][counting algorithms] move common functionality of
all counting algorithms in one place and in new namespace:
geometry::detail::counting
[util] add compile-time Boost.MPL-based implementation for computing
the power of an integral constant; this is used for computing (at
compile-time) the number of points and segments of a box in any dimension;
[test][util] add unit test for the ipower metafunction in the util
namespace
[test][util] add the unit test for ipower to the Jamfile
[algorithms][num_interior_rings]
* add variant support
* add concept checking for the geometry
* use code in geometry::detail::counting for implementing this function
[algorithms][num_geometries]
* add variant support
* use common functionality in namespace detail::counting for implementing this free function
[test][algorithms][num_geometries] add unit test for num_geometries
algorithm, including test for variant support
[test][algorithms][num_interior_rings] add unit test for num_interior_rings
algorithm, including test for variant support
[test][algorithms] add the unit tests for num_geometries and
num_interior_rings to the Jamfile
[test][algorithms][num_points] add tests for boxes in 3, 4 and 5 dimensions
[test][algorithms][num_segments] add tests for boxes in 3, 4 and 5 dimensions