Computing Graph Spanners in Small Memory: Fault-Tolerance and Streaming