Begin purging compartment syntax

I finally concluded that the use of compartments, while convenient for
stochastic multicompartmental simulation in BNG, was not only not useful
for simulations with Kappa, but added to significant confusion in the
formulation of the models. For example, the localization of Bid or Bax
could be specified using the "loc" keyword and/or by the compartment
status.

In addition, I finally deemed it time to purge the overloaded site "loc"
for Bid and Bax in favor of separate sites "cpt", denoting the
compartment (solution or vesicles), "conf" for conformation (eg. aqueous
conformation, or membrane conformation 1 or 2, etc.) and "pore" for
whether the Bax is in a pore or not.

My idea is to ultimately eliminate the n_cpt approach to
compartmentalization, which uses compartmental BNGL, in favor of a
site-based approach to compartments similar to what is implemented in
site_cpt; except that I hope to handle the site-based
compartmentalization in a fashion that doesn't require all of the
interaction macros to be rewritten. I believe that this should be doable
by creating a one_cpt (single compartment) model and then from that,
generating a new, multi-compartmental model by post-processing,
generating additional rules for the different compartments as necessary
and adjusting rates.

To aid in this process, I introduced some tests that will make sure that
each of the build_model macros in core.py can successfully build the
respective model. This should insure that I haven't missed any glaring
syntactical or rule-level errors.

Wish me luck.
Progress on conversion of one to multi cpt models

Basic functionality in place in multi_cpt.make_multi_compartment. For
safety, need tests to make sure that the references to the monomers and
parameters within the complex patterns of observables, initial
conditions, rules, etc. have the proper integrity. Am in the middle of
writing a test that will guarantee this.

Major things remaining to be done:

* First, the number of vesicles, and the scaling factor need to be
  specified in the builder.

* Second, the make_multi_compartment function needs to use the
  compartment number to generate the appropriate number of monomers,
  rules, etc.

* Third, the parameters will need to be scaled accordingly, and

* Fourth, the rules for translocation to and from vesicles will need to
  be changed so that they do not use a pseudo-first order reaction with
  the Vesicles() monomer.
Monomer/parameter ref integrity check

Plus I had to fix a bug in the make_multi_compartment function in
multi_cpt to keep the appropriate references to parameters.
Updated test running script at the top level
Plotting functions for both test scripts
Removed superfluous macro from one_cpt
Refactored tBid/Bax activation, moved one_cpt to core

One_cpt is eventually going to become extinct, with the core.py
eventually taking its place (it may still be called one_cpt).
Multi-cpt test for build_model_ta

Plus add title to one_cpt plots
Build_model_tai passes

Refactored old macro "iBax_binds_tBid_at_bh3" to instead reuse the
tBid_binds_Bax macro, with the appropriate site and conformation states.
Converted impl of Bax dimer, tetramer, and reverse

Also changed test scripts to test all of the models
Refactoring testing of Bax heat/Schwarz models (3/23)

Tested bax_heat, bax_heat_aggregation, and bax_heat_reversible.
Refactored some implementation of pore formation and aggregation.

* Moved pores_from_Bax_xxxmers macros from one_cpt to core

* Changed implementation of pore formation to use pore='y/n' site with
  new semantics (the Bax has formed a pore, not the Bax is in a pore).

* Removed "reversible=True/False" kwarg from basal_Bax_activation,
  because it implements the exact same rule as the macro Bax_reverses()
Fixed Bax dimerization (5/24 models done)
Rewrote Bax autoactivation macros (6/21 models done)

Updated all calls to pores_from_Bax_monomers/dimers to use new approach,
including replacing reversible=True with calls to Bax_reverses()

Deleted Bax_aggregates_at_pores--didn't make sense, was essentially a
redundant type of auto-activation.

Also deleted models containing aggregation macros, since they were
effectively redundant with the auto-activation models.

The approach to tracking pores with the Bax pore state makes no sense in
the auto-activation case, as there is no principled way to govern
interactions between a Bax with pore='y' and a Bax with pore='n' (which
one should convert the other, for example?). For this reason I've
written the auto-activation macros to blissfully ignore pore state. At
least this way they should work for localization assays like NBD.
Made multi_cpt inherit directly from core
Added multi_cpt constructor, updated monomer signatures

However, I'm now thinking that the right way to approach this is to have
the model macros in core just generally allow for single or multi-cpt
instantiations, and then have the subclasses simply specify how many
compartments there are, by polymorphism. I will give this a try.
Got t model working with everything in core

Had to rejigger the declaration of components somewhat, moving it out of
the constructor of the super class. This is because there is a
dependency of monomers->compartmentlist->initial conditions (because the
number of compartments is set by the initial conditions).
Moved multi_cpt to site_cpt

And moved the previous site_cpt to old_site_cpt.

Since multi_cpt (the new, universal compartmentalization implementation)
is site-based, it makes sense to call it site_cpt, at least for now.
The only thing is I want to make it so that the simulation class
simulates it using BNG instead of Kappa, because that seems to be
faster.
Changed my mind, new impl is in n_cpt

This is because the simulation code is wired up to do BNG SSA
simulations with n_cpt right away.
Changed pseudo-1-ord translocation so works in 1- and n-cpt
Re-ran translocation sim with new implementation