Dynamic Shortest Paths and Transitive Closure: Algorithmic Techniques and Data Structures