Topology Optimization of Single- and Multi-material Structures: From Single-physics to Multi-physics Designs