Design Strategies for Self-Assembling Nanostructures