Topology Attack and Defense for Graph Neural Networks: An Optimization Perspective