GAP: Differentially Private Graph Neural Networks with Aggregation Perturbation