naked pkg support + major container refactor

`Cask::Installer` was already much too complex, so I took this
opportunity to throw a `Cask::Container` abstraction around the
extraction part of the package install step.

It goes like this: a Cask's URL points to a Container of some sort. The
containers we currently support are: dmg, zip, tar, and (new) naked.
Naked refers to a raw file that just needs to be copied in place. This
currently just means a pkg file, but in the future it may expand.

A Container knows how to do two things: identify a path as being its
type (`Container.me?`) and extracting the contents of its container to
the proper destination for a Cask (`Container#extract`).

The first Cask we have that supports the naked pkg type is
`heroku-toolbelt`. (Thanks to @sheerun for the Cask definition.)

Other miscellania batched in with this refactor:

 - switched to an explicit require strategy rather than globbing
 - `Cask::Installer` is instantiated now to match its interface with
   other similar collaorators
 - simplified zip and tar identification to shorter strings rather than
   exact matches of full `file -Izb` output
 - `Cask::SystemCommand` gets explicit output redirection options
 - many rogue backticks replaced to properly use `SystemCommand`
 - fixed misnamed test file `link_checker_spec.rb`
 - remove some extraneous `after` clauses in tests; leaning more on
   `test/support/cleanup.rb` to uninstall for us
 - pkg uninstall `:files` gets a `-rf` to support removing dirs

refs #839 and #1043
Merge pull request #1068 from phinze/nakedpkgs

naked pkg support + major container refactor
naked pkg - save files with spaces properly
when uninstalling pkgs; sudo chmod before examining

this helps avoid a situation (which happened with `wav-tap`) where the
non-priveleged ruby code gets permision denied errors while examining the
contents of directories using `Pathname`.
pkg uninstall: support kernel extension unloading

this should complete support for `wav-tap` and finish out #839
update owncloud to version 1.4.0
Merge pull request #1071 from gill0r/owncloud.rb

update owncloud to version 1.4.0
Merge pull request #1070 from phinze/kext

Support for WavTap
require tmpdir to fix container error

the tests require tmpdir for themselves, which is why they didn't catch
this. i hate ruby libraries like this...
add pixel-check; a dead pixel tester
Merge pull request #1072 from phinze/pixel-check

add pixel-check; a dead pixel tester
Add BSD 2 Clause License
Merge pull request #1073 from NanoXD/master

Add BSD 2 Clause License
reverse default for SystemCommand's print option

we were setting it to false basically everywhere and it was getting
a little silly
fix a few bugs around recent changes

 - re-added a lost nil guard on `Dmg` containers
 - `FakeSystemCommand` was still returning an array of split lines
   instead of a string, even though its real counterpart switched to
   string when install/uninstall landed
 - flushed out an alfred cli bug
 - moved plist parsing down to SystemCommand layer
Update Amethyst for version 0.8.1.
Merge pull request #1074 from ianyh/master

Update Amethyst for version 0.8.1.
Add Cask for Flip4Mac

Flip4Mac components allow you to play, import, convert and make Windows Media
video and audio files on your Mac.
Remove .DS_Store files when uninstalling packages

.DS_Store files (http://en.wikipedia.org/wiki/.DS_Store) may litter
directories installed with pkgutil preventing them testing as empty and
getting deleted. Delete them along with symlinks.
Merge pull request #1076 from benjaminhawkeslewis/flip4mac

Add Cask for Flip4Mac