Add support for boost::intrusive::set and boost::intrusive::list.

The intrusive containers offers a lot of flexibility so I am not sure that I have covered every aspect, but it covers all the cases we have in our codebase.