Fix missing includes, close ticket #8457.

e.g. Now can compile following simple case.

    #include <boost/fusion/iterator/iterator_facade.hpp>
    #include <boost/fusion/iterator/iterator_adapter.hpp>

    struct null_iterator
        : iterator_facade<null_iterator, forward_traversal_tag> {};

    struct null_adapter
        : iterator_adapter<null_adapter, null_iterator> {};
Fix to meet constexpr requirements
Use category_of to get correct iterator category.
Add boost_tuple_iterator_identity to compare iterator correctly.

And add test for boost_tuple_iterator.