Manage current directory of process when running a specfile

When you have a nested dependency containing its own specfile, the file is eval'd using the process's current directory instead of the directory of the specfile.  This causes file reads which are done relative to the specfile to run in the wrong directory.

Specifically: a librarian-puppet project having a git dependency which also contains a Puppetfile in its root. This Puppetfile uses the ```modulefile``` dsl, causing a ```File.read('Modulefile')``` in the current directory.  This read needs to happen in the appropriate subfolder in ```.tmp/librarian/cache```.