Prevent block decoration root elements from changing padding
Prevent block decoration root elements from changing padding

Atom uses a ResizeObserver to watch for changes in block decoration
element size, but ResizeObservers only trigger their callbacks for
_content_ box changes. Because the FilePatch headers and hunk headers
were positioned by adding padding to the block decoration's root
element, padding changes failed to trigger re-measurement and
the line and gutter tiles would be rendered at the wrong offsets.

I've fixed this by:

* Moving the existing padding to a margin on the only child of each
  block decoration.

* Adding `display: flow-root` to the root element of each block
  decoration to prevent the parent and child margins from collapsing
  and the margin from ending up outside the block decoration element.

atom/github,atom/github,atom/github