move iterator_facade into range and port it to C++11, eliminate all dependence on boost