[10-stable] Multipackge support

Allow the `package` provider to take an array of packages to handle in one
transaction.

This solves two large problems:
* There are times when you cannot install two packages in sequence, like when a
  binary is moving between two packages - they *must* be done in the same
  transaction.
* When using Chef to install the vast majority of your base system, it
  can make imaging take a very, very long time because executing yum or apt once
  for every single package is painfully slow.

This solves both. The scaffolding is all there in the Package HWRP, plus the
underlying implementation for both apt and yum, the two I have access to test.

This is the 10-stable version. 11- and 12- versions coming, but I'd like to do the the majority of code review here since it's much, much easier for me to test on 10, I'll forward port that stuff to 11, then do any other code-review bits there.
No - empty ill not catch an array of 'nil' as empty which is what I'm looking for here.

Yeah, we should be able to coerce - we will just use helper functions to coerce at read time as you described elsehwere