Merge pull request #2 from orbeckst/master

packaged for standalone installation (Python 3 and Python 2)
add a reference to the math.ceil note
add test framework

- add the ability to run tests from the top level directory via
  'python setup.py test'
- translate runtest.py into a test that runs under this framework
- add a __main__ section to Tests/runtest.py and change its indent to 4
  spaces; make no other changes to this script
handle structures with 100,000 or more atoms

- the pdb format requires a 5-character field for the atom number; the
  hybrid-36 format allows up to a ridiculous number of atoms
optimize a number of functions

- Major optimization of the put_atom_in_box() function.
- Major optimization of the protein_precheck() function.
- Minor optimization in radial_volume_desolvation()
- Optimization in top_up() to scale for large structures.
Fix a number of crashes and special conditions

- Fix an issue where non-existing interactions were analyzed.

  Bug fix in setIonDeterminants(): skip interactions if either
  titratable_group_interaction_atoms or the backbone_interaction_atoms
  is empty.

- Set center of COO_group to self.atom if no oxygens present in residue.

  COO_group: If self.atom.get_bonded_elements('O') returns an emtpy list
  (the residue has missing side-chain), simply set the center of the
  group to the <self.atom> atom, instead of the center of the
  (non-existing) oxygens.

- Raise more friendly exception in Group.set_center() if an empty atom
  set is passed in.

- Cterm_group: Fix crash if residue is missing a carbon.

  The previous code would crash if the C-termini residue group was
  missing the carbon atom.

- Fix a failure when a HIS residue has missing side-chain atoms.

- Added an entry for Iodine (I) to the valence electrons table.
replace empty chains with "_" instead "A"
Merge pull request #3 from schrodinger/master

merge from schrodinger
added license
file open/close functions can process any stream *filename*
run.single() to run a propka calculation without script

- can pass a single pdffile (or stream(!))
- added options lib.loadOptions() to pass opt string