Use per-aggregate memory contexts for invertible aggregates.

Otherwise, we potentially leak memory whenever the aggregation
of such an aggregate is restarted, because unless they're all
restarted simulatneously, we never get to reset the aggcontext.

Doing this required moving AggCheckCallContext into nodeWindowAgg.c,
because it now needs to peek into WindowStatePerAggData. That function
now also asserts that it's not being called from a true window function -
doing that was always wrong, because the aggregation context it returns
is't suitable for use by a true window function.
Mark function as not using the inverse transfer function if the
frame start clause is UNBOUNDED PRECEEDING.
Fixed comment layout
Added a list of partially and non-invertible aggregates to the window function docs.