Added attribute to keep track of event order.

Added
-----
* Keep track of the order events are added to the event manager.
* Finalize events in reverse order.
* Some components use 'run', others use 'update'. Try run, then update.
Changed to keep output files open until finalization.

Changed
-------
* Keep files open until they are closed with finalize method. This
  fixes a problem where the system was running out of file handles
  when there were lots or writes.
Added functions to store component instances and classes.
Changed to use var names to map.

Changed
-------
* Added an optional vars keyword to list the variable names to map
  on the grid.
Added filename keyword to PortPrinter.
Changed to, optionally, keep nc files open.

Changed
-------
* Keep netcdf files open between writes.
Removed logging.
Added reading time series of grids with times.
Changed to use new framework functions.

Changed
-------
* Use the new framework functions to get/set component classes and
  instances.
Added ability to write status to a file.

Added
-----
* Write the current time to a file as the component runs.
Changed to use new model.yaml and component.yaml files.
Added new Model class.

Added
-----
* Model class to store a collection of components and their connectivity.
Added new GridMixIn class.

Added
-----
* GridMixIn class to give a component a grid-like interface.
Added unit test for grid mapping.
Added RunDir context.

Added
-----
* New RunDir class to create a context that changes the current directory
  while within the context.
Added unit tests for RunDir context.
Added services components.

Added
-----
* New services components. One to simply return constant values, the other
  to read a time series of grids and return interpolated values.
Changed to raise ValueError for bad var name.