Consumer spending posts best annual gain since 2007