ENG-6260 initial changeset. Remove executor/plannode Table* caching for ...

...safer truncates, refactor plannodes to reduce/normalize boilerplate.
I think the rule is:
    Include what you need to use.
    For simplicity, and to reduce dependencies, try not to include what you don't use.

There are a few exceptions like common.h that contain generally useful definitions that can be included many places as a convenience even though not all of these places use all of the nested includes.

As the result of trying to be minimal, sometimes I will move an include out of a header that does not strictly need it and into the few cpp files that really do need it. This may be part of what happened here.

I've never been a big fan of the alternative rule:
    Keep adding includes until everything compiles.
    Only remove an include when you hit one of those rare but hard to resolve recursive include problems.