A list is a simple cons-style list with a head and a tail.
The head of a list is an element,
and the tail is either another list or BOOST_PP_NIL.
(a, (b, (c, BOOST_PP_NIL)))
...is a list of 3 elements--a, b, and c.
This allows macro parameters to be variable in size and allows data states to change
size without the user explicitly keeping track of the size independently.
Elements of a list can be extracted with
BOOST_PP_LIST_FIRST and BOOST_PP_LIST_REST.