Refactor ring promotion timeout predicate into a user callable API function.
Refactor ring promotion timeout predicate into a user callable API function.

The riak_core_ring_manager already has a mechanism to optimize ring access
during heavy churn to optimize for ETS based access and during heavy reads
to avail of the erlang constant pool via mochiglobal.

The ability to predicate activity on ring stability is however more
generally useful.  For example, certain application commands intended for
cluster wide strongly consistent effect may be ill-advised during periods
of ring topology churn.

This patch simply refactors out the predicate into a public API so that it
can be used as such. The proposed API is:

    riak_core_ring_manager:is_stable_ring() -> boolean().

As the logic is predicated on inactivity and not covered in unit tests no
tests were added as the default inactivity period is hardwired to 90 seconds
and not tunable.

Kyorai/riak_core