Johnson hits first career slam as Astros top Cards