Avoid 'reference to reference' error in C++03.

  Some C++03 (strict) compilers (e.g. `gcc -std=c++03`) reject
  'reference-to-reference' in the template and/or typedef which
  described in CWG DR106 [1].

  In such situations, iterator_facade rejects reference type as a value
  type and some special iterators will become invalid:
  the test libs/range/test/join.hpp might be descriptive.

  1. http://www.open-std.org/Jtc1/sc22/wg21/docs/cwg_defects.html#106

Signed-off-by: Kohei Takahashi <flast@flast.jp>