The “Dead-End Elimination” Theorem: A New Approach to the Side-Chain Packing Problem