Run background and border through positioning

Previously the background and border classes would *sometimes* skip out
on having their position applied by the slot. This, however, made the
elements themselves unnecessarily responsible for things like margins
applied from parents, and resulted in margins getting double-applied at
some points.

Now we always run these through positioning, but that revealed another
problem which was an endless loop of slot repositioning as the
background grew to fill its slot. Turns out that was a result of us not
excluding "spaceless" elements from our slot content height computation.
Merge pull request #977 from shoes/background-positioning

Run background and border through positioning

Changelog: bugfix