Hdf5 saving ability.

Allows you to save any simpeg object to a hdf5 database and then reload it later (with the same linking as before).

This is done through metaclasses, so any object that must be saved must have the Saveable as the meta class.

Currently inversions are saved easily, more support is needed for saving other meshes/problems/data/optimizations etc.

There have been updates to the regularization in terms of documentation and bug fixes.