Switch to launchctl for Postgres

`brew services` is no longer supported:

https://github.com/Homebrew/homebrew/commit/c0b99c031fec0a2096b85a458d7b42e3627560d8

* Fixes https://github.com/thoughtbot/laptop/issues/93
* Fixes https://github.com/thoughtbot/laptop/issues/243
* Idempotently creates Postgres database cluster and starts (or restarts)
  Postgres.
Don't upgrade a brew that is already up to date

Fixes https://github.com/thoughtbot/laptop/issues/257

On a clean OS X Mavericks, Laptop outputs an error message towards the end of
the install script when `brew_install_or_upgrade` is invoked for OpenSSL:

    Upgrading and linking OpenSSL ...
    Error: openssl-1.0.1h already installed
    Linking /usr/local/Cellar/openssl/1.0.1h... 1139 symlinks created

The current version of OpenSSL was installed earlier as a dependency of
PostgreSQL. In general, a similar error will be logged whenever
`brew_install_or_upgrade` is called for an installed package that's already up
to date.

Currently, Laptop discards the error exit code of `brew upgrade` as follows:

    (brew upgrade "$@") || true

In addition to logging an error when there isn't truly an error, this approach
can cause real `brew upgrade` errors and potential bugs in Laptop to be masked
(e.g. Homebrew formula build failures or Laptop mistakenly invoking `brew
upgrade` for a package that isn't actually installed).

I think a better approach would be to check whether the installed package is the
same version as the current Homebrew formula before attempting `brew upgrade`.
Make brew_install_or_upgrade work with aliases

Fixes https://github.com/thoughtbot/laptop/issues/258

The following doesn't behave as intended:

    brew_install_or_upgrade 'postgres'

because "postgres" is an alias, not the full name of the formula. The actual
formula name is "postgresql".

The first time `brew_install_or_upgrade 'postgres'` is invoked it works as
expected — `brew install postgres` is run. Additional invocations result in
`brew install` instead of the expected `brew upgrade`.

The `brew_install_or_upgrade` function uses `brew list -1` to obtain a complete
list of installed packages, and these package names will be the actual package
names. So, grepping for an alias (with the `-x` option) won't match:

    $ brew list -1 | grep -Fx postgres

Note that there's no output, even though PostgreSQL is installed. Using the full
package name behaves as expected:

    $ brew list -1 | grep -Fx postgresql
    postgresql

Rather than passing on the first argument to `brew_install_or_upgrade` to the
`brew list` commands, the argument should first be expanded to the actual
package name.
Test whether Homebrew formula is installed

More readable and testable this way.
Add idempotent brew_launchctl_restart function

Fixes https://github.com/thoughtbot/laptop/issues/260

This is a soft error that occurs when Laptop is run and PostgreSQL isn't
currently loaded by `launchclt`, e.g. on the first run of Laptop:

    Starting Postgres ...
    /Users/wellmade/Library/LaunchAgents/homebrew.mxcl.postgresql.plist ->
    /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist
    launchctl: Error unloading: homebrew.mxcl.postgresql

The fix would probably be to check `launchctl list` to see if the service is
already loaded before calling `launchctl unload`.

This small added complexity probably justifies a function for running
appropriate `launchctl` commands. Homebrew has a strong convention for the
naming of `launchd` plists: "homebrew.mxcl.FORMULA_NAME.plist", e.g.
"homebrew.mxcl.postgresql.plist" and "homebrew.mxcl.redis.plist". This likely
makes a function to do the `launchctl` work fairly straightforward.
Drop support for Snow Leopard

* Snow Leopard was released in August, 2009 (about five years ago).
* Yosemite will be released in a couple of months.
* We support the last three versions of Ubuntu, so this is a little more
  consistent.
* Use the same format as the Linux "Requirements" section for consistency.
Link README to programs that Laptop installs

So that users can learn more about them.
Clarify OS X support
Add compatibility for Bash 3.x

The `|&` is new in Bash 4, which is not the default on Macs.

Given that Laptop is meant to be run on a fresh machine, `2>&1 |` is preferable,
since it'll work on the Bash 3.x, which is what comes installed on new machines.
Update start-services

Add MySQL to services.
Update mac

Rebuilding mac script with latest changes.
Update mac

Updating mac script with latest changes.
Update README.md

Update what's installed as part of the script.
Update mac

Temporarily remove QT.
Update mac

Remove brew cask function. Switch to Ruby 2.1.2 after installing JRuby.
Switch to launchctl for Postgres

`brew services` is no longer supported:

https://github.com/Homebrew/homebrew/commit/c0b99c031fec0a2096b85a458d7b42e3627560d8

* Fixes https://github.com/thoughtbot/laptop/issues/93
* Fixes https://github.com/thoughtbot/laptop/issues/243
* Idempotently creates Postgres database cluster and starts (or restarts)
  Postgres.
Update README.md

Change install locations.
Update mac

Rebuilding mac script with latest changes.
Fixes rebase borks.