Moved most components of the library to iterators:: namespace.

This change excludes boost:: and boost::detail:: namespaces from ADL for unqualified function calls (e.g. algorithms). This reduces the possibility of name clashes with other libraries and user's code. One of the effects should be fixing test failures on gcc 4.2 and 4.4 due to clashed with Boost.TypeTraits.

Also some of the functions marked with inline keyword.

Note 1: I'm not sure that all names are needed in the global boost:: namespace. In particular, some names in iterator_archetypes.hpp look like implementation details, even though reside in the public namespace.

Note 2: I did not move pointee<> and indirect_reference<> to iterators namespace because these tools looked loosely related to iterators. These tools could potentionally be moved to another library.