PCT-671: Support for explain

Alpha prototype, WIP
Because I thought it doesn't need to be slice of pointers. Slice of pointers is something different than slice of values. However, when looking at this one more time I would probably use `[]*proto.ExplainRow` because `append` makes copy of what is passed.