capture and handle boxen exit status

Boxen/puppet looks like it's using the `detailed-exitcodes` flag which means it'll never exit with a status code of 0.

From the [puppet-agent](http://docs.puppetlabs.com/references/3.4.0/man/agent.html) man pages:
>**--detailed-exitcodes**
Provide transaction information via exit codes. If this is enabled, an exit code of '2' means there were changes, an exit code of '4' means there were failures during the transaction, and an exit code of '6' means there were both changes and failures.

Boxen would finish bootstrapping and the user would never see the message about needing  to `source /opt/boxen/env.sh`. Now we're capturing the exit code and providing better output upon completion.