better payload management for EventIDBase
I tried to avoid this since the inception, in order to keep the size of the EventIDBase class small, but there's enough legacy code that uses run#/event# = (0,0) that we can't use that as a default invalid initializer to be able to test whether the payload is run/event or timestamp based. In many cases, (0,0) is used in EventIDRanges to set an initial time point that goes back to the equivalent of negative infinity.
So I've added invalid initializers that are non-zero (std::limits<>::max()), and a bit mask that's appropriately set when run/timestamp/lumi info is set.