Implement File provisioner, test DataObject better

* Most of the add stuff is in DataObject so I implemented specs for this object and cut down duplicate tests from the objects that inherit from it
* Implemented the Packer::Provisioner::File provisioner
Add Packer::PostProcessor and Packer::PostProcessor::* classes

* The Packer::PostProcessor and its sub-classes do the final processing in the packer flow
* Added classes and specs
   * The specs for the sub-classes are lean because they all use the default DataObject methods which are well-tested
* Added a bunch of constants to the classes for enumerating/naming the types
Skeletons for the Packer::Builder and its sub-classes
Sorted out the Packer::Builder::VirtualBoxISO builder

* Specs are done
* Added new methods to Packer::DataObject to handle integers and arrays-of-arrays-of-strings