minor updates to robertson example run.py

* IC param starting values are now less ridiculous
* printout of final position uses log change instead of percent error
First commit of parallel tempering and mcmc tests
Parallel tempering implementation and fit tests
Improved and corrected parallel_tempering and tests

In particular, the posterior probability ratio for the swap was
incorrect in the denominator.

Also refactored regular metropolis step into a separate method.

Wrote a function and test to fit a beta distribution by PT.
FIX ERROR in which test_position (rather than position) is recorded

This required a change to all code that had been written based on the
idea that only the accepted steps should be used for statistics (this is
not true--if the position is unchanged, the current position should be
counted again in tabulating the statistics).

This involved changes to
- MCMC.prune
- convergence_criterion
- get_mixed_accepts (which becomes get_thinned_mixed_steps)
- and convergence_criterion reporter
Added short-circuit to skip lkl calc when prior is np.inf

When the prior invalidates a parameter value (e.g., it is beyond a hard
cutoff) and return np.inf, you don't want to spend the time to calculate
the likelihood. Added two lines to calculate_posterior to skip the
likelihood calculation when the prior returns np.inf.
Changed number of bins for marginal hists to 25
A hello world program for MPI-based MCMC
In progress commit of MPI implementation of PT
Working implementation of parallel tempering by MPI

Wrote a sample implementation of fitting 2D gaussians. The
implementation required a number of changes to the core bayessb.MCMC
object as well.

Logging of "interesting variables" into the arrays was moved into the
accept/reject move methods as this made it so that external code driving
the walk wouldn't have to do this explicitly.

Because the MPI-based version instructs each chain to perform N steps at
a time, the estimate method had to be modified (rather, a new method,
estimate_nsteps was created) in order to allow N steps to be run at a
time.

Also, I realized that my implementation of PT had been incorrect in that
I was comparing the posteriors for the different chains independent of
their temperatures. This meant that the posterior probability of some
point x was considered to be the same for a chain at a low temperature
and a chain at a high temperature.
Changed number of chains in parallel tempering tests
Extensive refactoring of MPI implementation of PT into classes
Factored PT MPI classes into their own file

Put the code setting up the run for the 2d gaussian into its own script.
PT MPI writes files with appropriate basename

And reports use cPickle instead of pickle now
Fixed has_attr to hasattr
Fixed bug in convergence.py

A previous fix (5c411f083a2660e) had accidentally introduced a new problem in
which the list of chains from the mcmcset (mcmc_set.chains) were passed to the
convergence functions, rather than a list of the position arrays. This
is a patch that reinstantiates the list of position arrays so that the
the algorithm doesn't crash.
Changes to reporters to remove NBD model-specific things

In particular, the reporter on estimation parameters included the list
of nbd_sites and nbd_observables, which aren't applicable for a dye
release model, for example. Similarly, I had to modify the sample_fits
and show_fit_at_position functions to not use mcmc.options.tspan as the
universal timespan, and instead to use the timespan returned by the
updated versions of fit_plotting_function which return both the time
coordinates and the values.

I had to (at least temporarily) remove the part of show_fit_at_position
that plotted all of the observables, because it's not clear how to
approach this when the "fit" being shown is fundamentally a titration,
not a single concentration.
Sorting of chain filenames before running reports
New module with distributions for use in priors
Fixed error in random()