Return a Commit object from Stash -> save

Stash -> foreach() now also receives the Commit instead of the object id.  Commit already has a stringify overload, so this shouldn't break too much.

Stash -> foreach() was also previously not run in an eval context.