Made a lot of improvements to smap and fixed a bunch of bugs but there's still a reasonable amount to do.
Changed reading from map file to use proper field type instead of just assuming double.
Fixed search stoichiometries.  Works in a slightly different way now using atom labels but the idea is the same.
Added ability to plot convex hull for structure compositions when using the keepStableCompositions block.  This might later be refactored out to its own block.
Quite a few changes:
* SPipe blocks now all derive from a common class that uses curiously-recursive template
  pattern to inherit from the appropriate pipelib block (e.g. StartBlock, PipeBlock, etc)
  This way we can 'inject' useful library specific members that can be used by all spipe
  blocks such as workingDir() which gets the working directory from the engine.

* Added GnuplotConvexHullPlotter output directory so the hull can be written to a specific
  output directory.

* Added one lock guard to make sure the operation was thread safe.

* Removed a few unused variables

* A lot more stuff I can't remember