Update AmberMask to work with all Structure instances through duck typing.

Truncate hollerith array data to 4 characters when printing a prmtop.
Stop always rearranging molecules.
Oh!  Turns out when atom reordering occurs, the residues may need to be
reordered as well. So add functionality to sort residues and atoms within
residues as well.
Add back molecule rediscovery to "remake_parm"
Fix coordinate detection in checkValidity.
Move "rediscover_molecules" call to *right* after we prune empty residues, so
that the rest of the topology rebuilding is done using the "corrected" atom
order.
Do not use parm pointers, since those may not necessarily always be updated.
Improvements to set_molecules function.
Use sets so __contains__ is faster.
Turn a warning into an error.
Fix solvent molecule detection.
Python 3 fixes.
Improve nonbonded exception handling when using setBond/setAngle.

This also significantly simplifies addDihedral by getting rid of the "multiterm"
type. End-group ignoring is determined automatically from the existing bonds,
angles, and dihedrals, so exception handling is always dealt with correctly and
makes it harder to disobey the standard rules of classical force fields with
this command.
Merge pull request #9 from swails/fix_chamber

Fix a number of obscure issues