datastruct/list: add container_of macro