Physical Principles Of The Assembly Of Virus Particles And Other Protein Nano Containers