DataWriter class in place of write_data

Introduce DataWriter class in place of the data write_data to make
writing data more customizable and independent from the System class
for solving the equations.
Data writer for the cupric

Introduce DataWriter subclass for writing the cupric ion.
Fix bug in hemispherical cap implementation

There was more than one issue

 * A bug placed the cap in the middle of the feature as the center
   position of the cap was at y=delta. The mesh has not been
   readjusted so that y=0 at the top of trench. y=0 is at the bottom
   of the mesh below the feature.

 * Setting the transient term to have a zero coefficient didn't
   work. This may have been due to solver convergence issues. The fix
   just use the standard way to fix values by using large explicit and
   implicit sources. The value for the source can't be too large
   otherwise the PySparse solvers won't converge. Trilinos with PCG
   will converge with the default preconditioning (but not without).
Results for hemispherical cap

The notebook contains results with a hemispherical cap that actually
works. Currently there the filling is still flat.
Add comment about simulation