For modifier shortcuts we added a custom_data field to panels, this way the context would only
have to be used once and the modifier for each panel can be accessed more quickly later.
This ends up being mostly a cleanup commit with the few small changes in interface_panel.c.
The large changes in the UI functions are due to the fact that the panel custom data is now
passed around as a single pointer instead created again for every panel.
The list_index variable in Panel.runtime is removed as it's now unnecessary.
This also brings the instanced panel list idea closer to my goal of a generalized system that
could be used for any RNA collection. D7997 also becomes simpler with this method, as the
animation / NLA context doesn't have to be accessed for every single panel layout call.