Better fix for getting pups

Fine, I went back to size(). In this case it is cleaner than comparing to
end.
Wrapping single-line { conditional code; }
I no longer like unsigned int

a) it's verbose as hell

b) it does not really guarantee what I wanted it to, as it will just
rollover if given a negative number
Learned about std::tie
Similar unsigned int and brace fixes for logging
And for individual
Making Node create() tuple node_get_args()

Added forwarding Node constructor that takes a tuple of the arguments it
should pass to the real constructor. Now emplace_back should work
properly (actually construct the element in-place, rather than moving
what Node created).
Don't have to cast these any more