Distributed Average Tracking in Multi-agent Systems