Control positioning

This builds on @pieh's original work in #1208.

@kibje, @ronie mind taking a look and having a play?

One thing that likely will cause issues is labels.  I think what will happen is that they'll interpret <left> based on how they're aligned.  i.e. it will be the right edge if they're right aligned.  This applies to everything except list labels, which do things correctly.

I could perhaps put another commit on top to make label positioning consistent if you think that makes sense (IMO it does, but I hate breaking stuff for skinners...)