Removed unused parameters.
Bugfix: Initializing symbol table for counting

This fixes a problem that was introduced in a recent refactoring.  With
that said, it's not really clear what the the point of the
counter_by_name symbol table is. Aside from the functions touched in
this commit, it's only used by a function that isn't called during a
normal simulation (get_counter_trigger_column). As such, the bug didn't
cause any serious breakage.
Fix small memory leak related to object transforms

The vectors associated with SCALE, ROTATE, and TRANSLATE weren't being
freed.
Fix memory leak related to species definitions.

Removed some redundant mallocs, since species were already being mallocd
in store_sym.
Fixed bug in checkpointing code.

Our previous checkpointing code assumed that past (checkpointed)
simulations were run with the same timestep as the resumed run and
scheduled events based on this assumption. Thus, if the resumed
similation was run with a different timestep, events were scheduled
at the incorrect time (either too early or too late).

This commit corrects this issue for release events (such as release
patterns) by re-scheduling release events appropriately.

NOTE: The current code still improperly schedules unimolecular reaction
events upon resuming from a checkpoint with a changed timestep. This
will be fixed in a future commit.
Second part of bugfix in checkpointing code.

This fix ensures that unimolecular reaction events are properly
scheduled in simulations resumed from a checkpoint in cases were
the user changed the timestep.

IMPORTANT NODE: This fix required a change in the underlying
checkpoint file format since previously molecule time information
was stored in scaled units which does not allow one to properly
re-scale the times upon loading a checkpoint. In the revised format
time information is stored in absolute time units (seconds).

In the process, I've added an API tag to the checkpoint files
starting with version 1. Checkpoint files written with any
previously written MCell3 version default to API version 0
(the checkpoint file reader will detect this). I've also
enabled the ability to read and write checkpoint files across
different MCell3 versions (previously an MCell version identical
to the one which wrote the checkpoint file had to be used for reading).
Reading checkpoint files across MCell3 versions should be fine since
the API versioning will take care of any incompatibilities.
Bugfix: microscopic reversibility causing segfault

In certain circumstances, setting MICROSCOPIC_REVERSIBILITY to ON would
cause a segfault. This has been fixed, but a test should likely be added
to the testsuite so that it doesn't break in the future.
Fixed a number of small memory leaks.
A couple more memory leak fixes.
Merge remote-tracking branch 'origin/master' into dynamic_meshes
Merge branch 'master' into dynamic_meshes
Replace geometry and place volume molecule.

This commit allows geometry to be changed without checkpointing.
Eventually, this will be a scheduled event, but for now it's just hard
coded for testing purposes. First, we save all of the volume molecules
currently in the scheduler. Then the old geometry is trashed (along with
a lot of dependencies), the new geometry is parsed, and initialized.
Finally, we insert all molecules into the world using Boris's existing
code.
Geometry changes can now be scheduled.
Added new keyword, DYNAMIC_GEOMETRY, to parser.

Here is an example of how this keyword would be used in an MDL:

  ITERATIONS = 10
  TIME_STEP = 1E-6
  DYNAMIC_GEOMETRY = "mesh_changes.txt"
  INCLUDE_FILE = "my_geom.1.mdl"

  INSTANTIATE world OBJECT {
    Cube OBJECT Cube {}
  }

Also, let's suppose my_geom.1.mdl looks like this:

  Cube POLYGON_LIST
  {
    VERTEX_LIST
    { ...  }
    ELEMENT_CONNECTIONS
    { ...  }
  }

The file referenced by the DYNAMIC_GEOMETRY command, mesh_changes.txt,
would contain a list of times and MDL file names like this:

2e-6 my_geom.2.mdl
3e-6 my_geom.3.mdl
4e-6 my_geom.4.mdl
...

The first columns refers to the time at which the geometry will be
changed. The second columna refers to a file that contains all the new
polygon objects. This is very similar to how variable rate constant
files work, except the second column is an MDL name instead of a rate
constant.

This means that the meshes originally instantiated at the start of the
simulation in my_geom.1.mdl would be replaced at 2e-6 by those contained
in my_geom.2.mdl. And those in my_geom.2.mdl would be replaced at 3e-6
by my_geom.3.mdl and so on.

Every polygon object that was instantiated in the original MDL should
exist in the geometry files referenced. The polygon objects should also
be reinstantiated in these files. Here's what my_geom.2.mdl might look
like:

  Cube POLYGON_LIST
  {
    VERTEX_LIST
    { ...  }
    ELEMENT_CONNECTIONS
    { ...  }
  }

  INSTANTIATE world OBJECT {
    Cube OBJECT Cube {}
  }

These limitations may change in the future, but it is currently
necessary.
Small typo fix and clarification.
Fixed another memory leak.
Surface molecs can be used with dynamic geometry

This is very rudimentary support. Molecules can disappear without
warning if the geometry changes too much.
Fixed memory leaks related to surface regions.

These leaks only happened when using dynamic geometry.
Better placement rules for surface molecules.

This is a slight modification of Boris' original code to place surface
molecules. When placing a surface molecule after a geometry change,
MCell will try to place it on a surface where the object and region
names match that of whatever surface it was previously on. This prevents
problems where a surface molecule might unrealistically hop to a surface
on a completely different object or region.
Renamed some variables for the sake of clarity.

Also added a couple of short comments.