Walmart to buy Vizio for $2.3B as annual revenue climbs 6%