[core] add INTERPINFO_MAX_GENERATIONS api

Returns the defined constant for gms (changed from 4 to 3), or 0.
Allow -DGC_MAX_GENERATIONS=n to be set via --ccflags.
benchmarked with parrot-bench: 3 and 4 are the best, 8 is also interesting.

Todo string collects in t/op/gc-leaky-call.t and ..box.t
  There's no apparent need to collect strings, when none are
  allocated during a cycle.
  But add a collectable string for the lulz
[gc] enable on_dirty_list assertion, document pobj flags

and improve the GH #1159 testcase. It was too slow
[gc] Change semantics of GC_MAX_GENERATIONS

GC_MAX_GENERATIONS=3 means now 3 generations: 0,1,2.
It was too odd and head-scratching to define 4 for max 3 generations