Initial commit starting work on prefsutil

[#1 status:In Progress]
Core functionality complete

The prefsutil program lets you read, write or delete individual plist items from the command line. It's sort of one step easier than vi-editing plist XML files by hand.

The only significant change to Preferences.py was keeping it from writing out an empty plist file when a new, empty Preferences object is instantiated. Now it waits for a key/value pair to be added before writing anything to disk.

[#1]
prefsutil read can now read a whole file

In addition to reading a specific preference with prefsutil read <file> <key> you can now read out an entire file's preferences in more-or-less human-readable form with prefsutil read <file>.

Note that this depends on the JSON parser to generate the human-readable output, and technically it's possible to have a plist that can't be JSON-encoded. But this probably won't come up, he said. A oppressive silence fell. Far off in the distance, a dog barked.

[#1]
Merge branch 'feature/prefsutil' into experimental