Implements a way to swallow spurious compiler warnings

Two files are provided:
  - range/v3/detail/disable_warnings.hpp
  - range/v3/detail/re_enable_warnings.hpp
to:
  - store the client warnings and disable some of them (disable_warnings.hpp),
  - restore the client warnigns (re_enable_warnings.hpp).

These files are meant to be included multiple times and swallow the warnings for
a given code block.

Currently warnings are swallowed for algorithms.hpp and views.hpp, only.
Both GCC and Clang are supported.
New warnings and compilers can be easily added.

The rationale is that since the library is header only, clients might be using
all sorts of broken compilers and insane warning configurations with lots of
false positives. Disabling those warnings is better than the alternatives.