Harvick holds on to win wild race at Charlotte