Computational Design of Self-Assembling Protein Nanomaterials with Atomic Level Accuracy