osx idempotentcy fixes based on chrispwood's PR.

Includes:

* Fix the "brew_install_or_upgrade" function, use it for all components
* Remove executable perms
* Skip installing an already installed ruby

Technically re-running laptop is not idempotent in that it will upgrade
brew-installed items and potentially install a new ruby. I feel this is
expected and wanted.
'brew upgrade' will exit with an error code of 1 if a package is already fully upgraded, hence the use of the subshell to get around our default error trapping. Not ideal, but a necessary hack.