Engineering building blocks for self-assembling protein nanoparticles