Refactor of transition models

I split out some transition models into two conceptual pieces:

- One piece is that which actually updates the primary input table,
  e.g. the households table. This is in a series of *Transition
  classes which includes some for simple growth rates, and tabulated
  growth rates and control totals.
- The other piece is a TransitionModel class that makes use of a given
  *Transition class and mostly handles the updating of linked tables.

Another big addition is the actual ability to have linked tables with
transition models. This handles, for example, having a "persons" table
that references the households table. The households table is what is
actually transitioned, but any rows in persons that reference a copied
or removed row in households also have to be copied and removed.
This is handled by passing a linked_tables dictionary to
TransitionModel.transition along with the primary data table and year.
Add a couple doc strings to TabularTotalsTransition.
Merge pull request #19 from synthicity/semcog-expr

urbansim.models package

Includes OLS regression (RegressionModel), MNL location choice (MNLLocationChoiceModel),
relocation (RelocationModel), and transition (TransitionModel).
Add Slack notifications to Travis.
Add _FakeRegressionResults for wrapping saved model coefficients.

A fit RegressionModel stores a statsmodels RegressionResults subclass
and uses that for prediction. (And users can look at the statistics of
the model fit.) For the purposes of storing models on disk all we can
save is the model expression and the fit coefficients.
_FakeRegressionResults can wrap those to provide a RegressionResults
stand in when loading a fit model from a file.
to_json and from_json methods for RegressionModel

We'll be able to save even a fit model on disk or in a database
as JSON.
Reconfigure JSON tests to do better numeric comparison of stored coefficients.
moving from json to yaml for regression storage
yaml-ifying location choice
fixing the formatting of the estimation output
adding yaml to lcm

also updating the order for the lcm yaml options

added simple_relocation_rate to the location choice model
remove simple relocation rate

should have been in the relocation model - didn't notice this at first
check that coefficients is not None
adding from_yaml to networks
Fix YAML tests for RegressionModel

Also moved the creation of a dict representation out to its own method.
Fix LCM tests.
Move ordered_yaml and make_model_expression functions to new urbansim.utils.yamlio module.
Move some YAML output logic to urbansim.utils.yamlio for re-use.
Add utility function for turning any valid model expression into a patsy string

So that models can be expressed as strings, lists, or dictionaries and
converted to strings for statsmodels/patsy on the fly.
Use str_model_expression properties so that model_expression can be a string, list, or dict.