Test commit
Added a simple default for number of GPU blocks in cupSODA.run().
Basically, will try to fit 32 threads per block if memory permits. If
not, will fit as many as possible. 'n_blocks' is then just the total
number of simulations divided by the number of threads per block.
Changing default for 'n_blocks' to 'None' in cupSODA.py
In cupSODA.py, moved the definition of 'param_values', 'y0', 'vol', and
'outdir' from cupSODA._init_() to cupSODA.run(). This way the same
solver can be used for different runs. Previous code required a new
solver to be defined for every set of simulations.
Added 'verbose' and 'additional_args' arguments to run_ssa() in bng.py.
Changes to pysb.bng.run_ssa to make it more similar to
pysb.integrate.odesolve: 1) Changed the function signature to take a
list of output times (tspan) rather than t_end and n_steps (this allows
t_start to be non-zero). Also added an **additional_args kwarg so that
all other arguments to BNG's simulate_ssa() method can be used. 2) Added
the species populations from the CDAT file to the return array with
names '__s0', '__s1', etc.
Modified pysb.bng.run_ssa to pass the 'sample_times' argument to BNG
rather than 't_end' and 'n_steps'. This allows for outputs at uneven
time intervals.
Modified pysb.bng.run_ssa to include 'time' in the output array. This is
important because it's possible for the ouput times from BNG to be
different from the time points specified in the input 'tspan' array. For
example, the 'output_step_interval' argument tells BNG to output at
specified numbers of simulation steps. Since BNG will also output at the
specified time intervals, the number of output time points will exceed
the number of input time points. Another example is the 'stop_if'
argument, which tells BNG to quit if a user-specified logical condition
is met, e.g., a species concentration exceeds a threshold. In this case,
the number of output time points will be less than the number of input
time points.
Small change to how arguments are handled in pysb.bng.run_ssa
Small change to pysb.bng.run_ssa so that network generation does not
need to be run prior to calling (analogous to how
pysb.integrate.odesolve works).
Modified pysb.bng.run_ssa to fill in the model elements 'species',
'reactions', 'observables', and 'odes' by parsing the NET file generated
by BNG. To accomplish this, pysb.bng.generate_equations had to be
refactored. Specifically, the majority of the code was moved into a new
function named '_parse_netfile'. This allows this function to be called
at the end of pysb.bng.run_ssa.
Some modifications to Solver.__init__ to support expressions containing
observables.
Removing conflicts with master branch
Merge remote-tracking branch 'origin/master' into lharris

Conflicts:
	pysb/tools/cupSODA.py
Restoring changes to bng.py, core.py, and integrate.py that had to be
removed to resolve conflicts in merging with master branch. Also
restoring cupSODA.py and tyson_oscillator.py.
Restoring some code from master that was erroneously deleted after the
recent merge.
In Solver.__init__, modified the code that subsitutes expression names
with the expanded expressions to include parentheses around the expanded
expression. This is very important if the expression involves addition
or substraction of multiple values.
Moved the arguments 'gpu' and 'n_blocks' from __init__() to run() in
cupSODA.py
Merge remote-tracking branch 'origin/master' into lharris

Conflicts:
	pysb/bng.py
Resolving conflicts and merging recent changes to bng.py into 'lharris'
branch