Remove todo for null object pattern.

See: http://en.wikipedia.org/wiki/Null_Object_pattern
Remove todo for multi-delegator definition

We define attributes and delegators on multiple lines for clarity and so
they can be documented better.
Update shellout helper to support ARGV array
Add Mac pkg packager
Add functional test for mac packager component
Integrate MacPkg with Project

* Add delegation for configuration needed by packagers in Project
* Update mac_pkg functional tests to verify MacPkg uses Project API
  correctly
* Update test fixtures to match correct project layout
Integrate Project with Packager::MacPkg

replace placeholder code with code to build the mac pkg via the
Packagers::MacPkg component.
Add fallback for mac pkg identifier when not provided.
Ignore packages created by functional tests
Store intermediate packaging products in var/cache

Using world-writeable directories (like /tmp) can cause symlink attack
vulnerabilities.

* Only Packagers::MacPkg uses this for now. AIX packaging still uses
  /tmp
* The cache dir can be relocated by configuration, so an additional
  option for `package_tmp` is added to the config.
* Add delegation in the Project class so that packagers use _only_ the
  project for input.
Merge branch 'mac-pkg-wip'

Builds on Mac OS X will now produce Mac .pkg packages instead of makeself
sharballs. This is a breaking change in the following ways:
* The obvious format change. Automated installation scripts need to use OS X's
  `installer` program to install the package.
* Building OS X packages requires you to place a welcome.html, license.html and
  background.png file in the files/ directory of your Omnibus project. In
  return you get a nice customized installer.