[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
[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
[algorithms][num_points]
* move code common to other counting algorithms in namespace
  detail::counting (in file algorithms/detail/counting.hpp)
* implement detail::range_count using detail::num_segments::range_count
* implement algorithm for boxes of any dimension
[algorithms][num_segments]
* move code common to other counting algorithms in namespace
  detail::counting (in file algorithms/detail/counting.hpp)
* implement algorithm for boxes of any dimension
[algorithms][multi][num_points] move code from multi/algorithms/ directory
to algorithms/ directory
[test][util][ipower] make ::ipower function inline