suzerain: lazily allocate largo workspace

Required making sg.workspace mutable to avoid changing umpteen APIs,
though I would have preferred to have made cleaner choices earlier.

Moves allocation of workspace as well as sanity checks from driver.cpp
into slowgrowth.cpp.  Warnings now come from "slowgrowth" instead of
the application, which may be more informative.

Deallocation made lazy from new driver::~driver() destructor.

Generally, I am unhappy with suzerain/slowgrowth.hpp depending on
logging, as this commit now causes, and so I'll move the logic
back into the perfect gas directory next.

git-svn-id: https://svn.ices.utexas.edu/repos/pecos/suzerain/trunk@45121 0bd85f0b-c151-43b9-a1e9-27231104551f
suzerain: move slowgrowth back to apps/perfect

Ultimately, I wanted to introduce logging which falls outside
the purvey of suzerain/ and into suzerain/support.  Everything
got sufficiently messy that I'm now balking at moving this
into the main library for now.

git-svn-id: https://svn.ices.utexas.edu/repos/pecos/suzerain/trunk@45122 0bd85f0b-c151-43b9-a1e9-27231104551f