[environment] Only update modules once per deploy

The original recursive module updating mechanism for new environments
was implemented inside of the environment, which broke encapsulation and
responsibility of concerns. One of the impacts of this is that if a new
environment was deployed and the `--puppetfile` flag was given, modules
for that environment would be updated twice. This generally would have
little effect aside from increasing the total entropy in the system but
was obnoxious.

This commit resolves this by entirely removing the responsibility of
updating modules from the environment and expecting the caller to handle
this. Because the calling code will know if the Puppetfile needs to be
updated and if the environment was created, it can deduplicate the
module update process.

This change is slightly backwards incompatible because it changes the
behavior of #sync. However the affected APIs are pretty far inside of
r10k, and the outward facing behavior of r10k does not change. This
should only impact developers that are hooking deep into the internals,
and I have no idea if there are any such developers.
Merge pull request #233 from adrienthebo/feature/master/gh-221-deduplicate-puppetfile-install

Feature/master/gh 221 deduplicate puppetfile install