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.