Graph Spanners: a Survey