move debug tracking to _restore_metamethods_from

Moves the logic for preserving DB::sub information from
HasMethods::add_method to _restore_metatmethods_from (which calls
add_method in a loop).  This is because we only want to preserve DB::sub
information in cases where we are reinitializing a class or a role; we
want to allow DB::sub to be clobbered in the general case.  Also added
more test cases to cover Role method reinitialization or clobbering.