- completely rewritten attribute logic, adding AttributeStorage such
  that attributes can more easily be serialized
- updated existing widgets to reflect new attribute logic
- rewritten large parts of the documentation to become better