Noncovalent interactions in proteins and nucleic acids: beyond hydrogen bonding and π-stacking.