Dale Earnhardt Jr. holds off Jeff Gordon and Tony Stewart at Martinsville