Hurricane Odile delivered a punishing blow to the Mexican resort town of Cabo San Lucas, tearing away the fronts of luxury resorts and leveling ramshackle homes on Monday.