Cardinals hit three homers but suffer 5-4 walk-off loss to Astros