[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
[algorithms][num_points][num_interior_rings][num_geometries]
coding style change: move curly brace at beginning of next line
[algorithms][num_points][num_geometries][num_interior_rings] replace
unnecessaty "typename" by "inline"
[algorithms][num_segments] replace unnecessary "typename" by "inline"
[algorithms][num_geometries][num_interior_rings][num_points][num_segments]
move concept checking from free function to struct calling the dispatch
class (i.e., after the variant resolution is done)