The patch adds a new type ParticleTriplet. This patch is needed for
some upcoming changes to the containers. It also, as a side effect to
clean up header inclusion order, moves the container macros to
internal/container_macros.h (the macros need various headers to be
included and so aren't as simple as the rest of the macros in macros.h).