Yield and EFA shared the same namespace, this commits splits them and introduces tuple tree containers as well.
This ensures headers make sense on their own, without implicit assumption about includers to also include other headers before them.
Also, use ROOT_TYPE.