Add swap for background-position

This patch adds support for swapping `background-position` values. It cribs from the [original JS version of R2](https://github.com/ded/R2/blob/f690519bd15c138b0031bae961c85c8ebc3e9d83/r2.js#L44) but handles a couple more cases and has more expansive test coverage.

N.B. Position values in `background` properties aren't swapped.