Several disjoint updates/fixes

o Update to command line processing.  Especially for the mml run command.
o Changed the plotting around some.  Better color choosing.  Moved to
  the core/ directory.
o Removed the other viz stuff.  Maybe someone will resurrect it in the
  future, but for now all of the files are nonfunctional, except the plotting.
o removed old xpython script and related
o added bin/mml-python
o moved core/mat_point_sim to core/simulator (more consistent with other file names).
o big clean up to the path parsing.
o clean up to some raised errors.
o new test for path table functionality.
o bug fix running tests with rc nprocs
Another crack at mimicking.

o Mimicking is done by the command line (and rc file) option "switch".
  suppose we want to switch all occurrences of elastic with pyelastic,
  as before, we do --switch "elastic:pyelastic".  The elastic model will
  be instantiated and parameters parsed.  After instantiation, we check
  for switching.  In this case, the elastic model is moved to the mimic
  variable and the pyelastic model is instantiated - with the mimic
  model sent to the constructor.  Then, the pyelastic model can retrieve
  from the elastic model (now in the mimic variable) any parameters it
  wants.

o This works because of another feature I learned from Sierra SM.  Every
  model defines a "completion" whereby all elastic parameters are
  computed from the model input.  This allows Sierra to do some things
  with Young's modulus (for example) even if the model doesn't use
  Young's modulus.  I did something similar, after a model is
  instantiated and parameters parsed, we "complete" the parameters.
  This involves computing all remaining elastic parameters, strengths,
  etc.  So, when a model is trying to mimic another model, it doesn't
  retrieve its parameter values from the model it is trying to mimic, it
  gets them from the completions of the model it is trying to mimic.

o For the completions to work, we have to know that, for example, "K" is
  bulk modulus.  To assist, I added another MaterialModel instance
  attribute prop_names.  It is a list (same length as param_names) that
  gives the property name for the related parameter.  We regard
  properties as something intrinsic to the material and parameters as
  parts of the model.  So, for the elastic we would have:

  param_names = ["K", "G"]
  prop_names = [EC_BULK, EC_SHEAR]

  EC_BULK and EC_SHEAR are imported from materials/completion.py.  That
  file has a bunch of other properties and my first attempt at computing
  as many different properties from a given materials parameters.  Of
  course, it can be improved greatly.