Make Child<> an invalid type if the child cannot be extracted

The type alias `Child<Node,...>` used to simply be `void` if the child type
could not be extracted. That is rather unhelpful, as it makes it impossible to
use in SFINAE.
This patch changes the behavior by making it impossible to instantiate the type
alias if there is no valid child.