Changed margin semantics to subtract from width rather than adding to it
Extended capabilities to directly set the element_width/height

* useful in the backend when no width is preset, to create the UI
  element with as much space as it needs and then set this as the
  width of the element