It seems that confusion in template parameters naming lead to mistakenly swapped types to `is_substitute`. The code to X3 have been brought from Qi with the same mistake, but I do not know how to trigger it in Qi.
Alternative parser were appending empty values with attributeless parsers, while
it should not append anything at all.
A container parser of alternative parser of container parser with container of
variant of container attribute was failing to compile.
It would be cleaner to simply store every subparser wrapped inside `alternative`
because even the general way to call subparsers is via `parse_alternative`, but
it will hurt parser expression tree readability.
If in a sequence only one element produces attribute, then make whole
sequence to produce that attribute,rather than wrapping it into
fusion::deque. Not doing so breaks alternative<> parser, when such
sequences are on left and right side of it, because it then generates
variant attribute over fusion:deque<> attributes, which is not
what it is supposed to do. Plus it breaks traits::move_to when both
source and destination are single element fusions sequences. Hence this
fix to put everything back to normal for this edge case.