rack'n'roll - Better modeling Rack, Keg and let there be color

# Rack'n'roll - Introduction

I propose a new `MeaningfulPathname`, subclass of `Pathname`, that handles the `Keg`, `Rack` and `LinkedKeg` instances. The idea is to improve and centralize validation and existence checking. Right now, different locations do care about getting and validating possible kegs from a rack - which is hard without a manifested concept of a rack.

Further, there is a difference between a rack and a formula, that was not well presented yet. For example `Formula.installed` basically lists only all children of `HOMEBREW_CELLAR`. Further the meaning of `Keg.installed` was misleading. This is replaced now by `Rack.all` or `Rack.all_fname

In the development of better and more meaningful (color) highlighting of installed, outdated, updated, unlinked formula etc., the need for a `Rack` implementation became evident. So much, that I prefer to combine the introduction of a Rack class and improvements to Formula, Keg and LinkedKeg together with the color highlight. Perhaps it's even better to factor out the color and highlight changes into a follow-up PR. But for now I leave this as one package.

This is a preview of the work. I will add tests for the new functionality. The old tests do pass.

## MeaningfulPathname

Certain directories have special meaning to Homebrew. However, Ruby's `Pathname` implementation creates children with `self.class.new` which leads to the strange effect that `a_keg.children` were also kegs. To avoid this only valid Kegs are allowed by `Keg.new`. The same holds for the new `Rack` class.
By overwriting `MeaningfulPathname.new`, we can handle this and automatically return a `Pathname`, if the instance is not `valid?`.
There is a stronger concept than validity: Reality. A Rack or Keg or LinkedKeg is `real?` if it actually exists and is valid.

## Rack 

A rack is a `Pathname` that contains all the `Keg`s for a certain software (usually a rack corresponds to a formula). The HOMEBREW_CELLAR is where all racks are located.
Rack inherits from MeaningfulPathname (and indirectly from our own Pathname extension), thereby supporting :validate=>true and :realcheck=>true on Rack#new to centralize these operations.
Note that rack.children (and parent etc.) does return Pathname instances as they are not valid racks.

```ruby
all = Rack.all  # list all existing, valid software installed.
Rack.all_active_kegs  # active kegs (i.e. `keg.linked?`==true)
rack = Rack.factory('wget')  # get the validated but possibly not
                                        # yet existing 'wget' rack.
rack.real?  # `true` if this is actually valid and existing.
rack.fname  # the unique name of this rack.
rack.kegs  # array all kegs for this rack.
rack.active_keg  # will get you the keg that `keg.linked?`.
rack.newest_keg  # The keg with the higher version number
"git".rack  # the fun way.
rack.active_keg.linked_keg_record is the `LinkedKeg`
```

## Keg and LinkedKeg

A keg is a `Pathname` in a `Rack` directory corresponding to one specific version of a software. Only one keg in each rack can be the active one (i.e. `keg.linked?==true`) but there can be multiple kegs in a rack.
The `Keg#linked_keg_record` is a instance of `LinkedKeg` and represents that link.

A keg is the place a software is put after build (that is where we tell build systems to install to).

Note2, `Keg#fname` is the `parent.basename.to_s` and not it's own basename!

```ruby
lkeg = LinkedKeg.factory('wget')  # valid but may not yet exist
lkeg.real?  # Valid and linked correctly to a `real?` keg.
keg = lkeg.keg  # returns the keg to wich lkeg links to.
keg.fname  # => 'wget'
keg.version
keg.linked_keg_record  # returns the LinkedKeg (may not yet exist)
keg.rack  # The rack this keg is in. Preferrable over keg.parent.
keg.uninstall
keg.link  # Do the linking. After this `keg.linked_keg_record.real?==true`.
"git".linked_keg
```

## Formula

The formula gains `Formula#rack`, `Formula#keg`, `Formula#active_keg` and `Formula#best_keg`.
Often we just want the best_keg, which is:
 - the active_keg, if existing
 - the keg defined by the name & version of this formula
 - the newest keg


## Color and Highlighting

Color-code `brew update`, `brew ls` only on Tty to quickly see which formulae that I have installed, have changed.

`brew deps` and `brew uses` now also marks installed dependencies.
(Wich `brew deps` also indicating unlinked deps that are not keg_only).

- brew update giving hint to run `brew upgrade` if needed
- brew update giving hint to run `brew log <formula` if needed
- Color code for modified and outdated matching the hints.
- Installed formulae have a "*" in `brew {update,deps,uses}.
- brew update: Show modified and modified with version bump separately.
- Rewrote the puts_column in pure ruby. Yay, no more /usr/bin/pr!
- Typo fix in testing_env "cellar" -> "Cellar".
- Added tests to test_utils.rb.
  Run with `ruby test_utils.rb -- --verbose` to see all the colors.