reorganized requires and added module overrides of ::included and ::extended as well as class override of ::inherited so that modules extending either can define the same and actually get called