Attribute updates for annealer hygene, round 2:

* Make Attrib.get smart.
  Instead of passing a blob of JSON, it now accepts the object it should
  try to work with.  This centralizes the logic around what fields in an
  object are valid places to get attributes from, and will fail hard if
  you pass it something that should not work with the attribute system.
* Add matching Attrib.set methods.
  This provides an abstract interface for setting attributes on objects
  that matches the use of Attrib.get.
* Numerous trivial cleanups to make things work with the above changes.
Move attrib updating logic into their respectove roles.
Merge pull request #794 from VictorLowther/pull-req-master-cd953079fcc42015c6552d4b6d190cc54e898308

https://github.com/crowbar/barclamp-crowbar/pull/794

Merged by devtool for ravolt