Take the code from OpenMM and insert some simple (hacky) code to omit

contributions of each atom to the effective GB radius if one of the atoms has a
charge of 0 (i.e., it is a dummy atom).

This module includes a "register" function that will replace the customgbforces
imported from OpenMM with the ones defined here, allowing you to do something
like:

import cnstphgbforces
cnstphgbforces.register()

And then build a system from Amber files as per usual, except the force used
will be the new ones defined in cnstphgbforces.

The one caveat is that createSystem in the AmberPrmtopFile class will use
GBSAOBC2Force as it's implemented directly (rather than the one implemented
through CustomGBForce). The AmberParm class that I wrote as part of AmberTools
does not do this -- it pulls all forces from customgbforces.

My AmberParm class also interfaces with ParmEd to allow rapid, safe parameter
modifications with simplistic syntax (but that's somewhat unrelated).