Cracker Barrel posts surprise profit of $42.8M, lifts full-year outlook