Task: NBFIX is applied correctly to 1-4 interactions (openmm/openmm#3324)

org: openmm
repo: openmm
pr_number: 3324
issue_title: NBFIX is applied correctly to 1-4 interactions
issue_body: Fixes #3257.
resolved_issues: number: 3257
title: Incorrect non-bonded energy with CHARMM FF
body: I conducted a single point energy comparison between CHARMM and OpenMM with a simple test system containing a single cholesterol molecule ([test_chl1.tar.gz](https://github.com/openmm/openmm/files/7220567/test_chl1.tar.gz)).

(unit: kcal/mol)  | CHARMM | OpenMM
-- | -- | --
Bond | 3.4090 | 3.4089
Angle | 16.2683 | 16.2683
Urey-Bradly | 2.3382 | 2.3382
Dihedral | 16.8157 | 16.8156
Improper | 0.0000 | 0.0000
vdW 1-4 | 6.5306 | 6.1477
vdW | -3.4140 | -3.4140
vdW Total | 3.1166 | 2.7337
Elec. 1-4 | -44.0315 | -
Elec. | -15.1082 | -
Elec. Total | -59.1397 | -46.7842

As shown above, while bonded energies are identical between CHARMM and OpenMM, non-bonded energies are different.
The energy difference in vdW 1-4 came from the NBFIX, i.e. if NBFIX parameter is available for a certain 1-4 atom type pair, the corresponding NBFIX parameter should be used.
However, this doesn't seem to be implemented in `createSystem` function in `CharmmPsfFile` class.

https://github.com/openmm/openmm/blob/779400a1e3fdc988e84fa7aed760ac95d81c179c/wrappers/python/openmm/app/charmmpsffile.py#L1383-L1390

For electrostatic interaction, I have no idea what is causing the difference.

Could you please check this case?

For non-bonded interaction, I used the hard-truncation with 12 Å cut-off without PBC (CutoffNonPeriodic).


## IMPORTANT INSTRUCTIONS

1. If you edit a python file, you MUST run 'make PythonInstall' inside the build directory
2. If you edit a c++ file, you MUST run 'make -j4 && make install" inside the build directory

Reference solution:
fix_patch: diff --git a/wrappers/python/openmm/app/charmmpsffile.py b/wrappers/python/openmm/app/charmmpsffile.py
index 3f07245326..254f3454c6 100644
--- a/wrappers/python/openmm/app/charmmpsffile.py
+++ b/wrappers/python/openmm/app/charmmpsffile.py
@@ -1387,8 +1387,13 @@ def _is_bond_in_water(bond):
                 atom1 = self.atom_list[ia1]
                 atom4 = self.atom_list[ia4]
                 charge_prod = (atom1.charge * atom4.charge) * params.e14fac
-                epsilon = sqrt(abs(atom1.type.epsilon_14 * atom4.type.epsilon_14)) * ene_conv
-                sigma = (atom1.type.rmin_14 + atom4.type.rmin_14) * (length_conv * sigma_scale)
+                try:
+                    rij, wdij, rij14, wdij14 = atom1.type.nbfix[atom4.type.name]
+                    epsilon = wdij14*ene_conv
+                    sigma = rij14*length_conv*sigma_scale
+                except KeyError:
+                    epsilon = sqrt(abs(atom1.type.epsilon_14 * atom4.type.epsilon_14)) * ene_conv
+                    sigma = (atom1.type.rmin_14 + atom4.type.rmin_14) * (length_conv * sigma_scale)
                 force.addException(ia1, ia4, charge_prod, sigma, epsilon)
 
         # Add excluded atoms