Programmed Self-Assembly of Synthetic and Biological Macromolecules: From System Design to Future Materials