Principles of Helix-Helix Packing in Proteins: The Helical Lattice Superposition Model