Confine Rubycocoa to a Feature

Previously, I was trying to load the Rubycocoa library in the provider itself
and then catch any errors. The correct way is to implement a Puppet 'feature'
and then load the provider based on the Feature. This commit does this (leading
up to supporting more providers).
Support the CFPropertyList library

Previously, the property_list_key type only supported Rubycocoa. That was all
well and good when OS X shipped with Rubycocoa, but as of Mavericks (10.9) and
Ruby 2.0.0, Rubycocoa has been pulled.

This commit adds support for using CFPropertyList (CFP) to read plist files in OS X.
Now, CFPropertyList SHIPS with OS X Mavericks, BUT it ships with a version that
contains some bugs (namely, one that tries to monkeypatch Enumerable). Because
of this, we cannot use the version of CFP that came with Mavericks - we MUST
use a newer version (at least 2.2.5).

The implementation of CFP is easy - it's all contained within the read_plist_file()
and write_plist_file() methods in the provider file.