Lots of things will break, hopefully for the better (eventually)
This commit use new upstream APIs:
* Many cairo paths have been replaced with gears.shape and gears.matrix
This commit add some features:
* Improved border_color support, now available per state
* bg_image support, now available per state
* Mutualize the state setting, remove duplicated code
Regressions:
* The arrow menu background border is off by a pixel
* The layout position problem reported by @mindeunix is now worst.
The positioning algo is full of race conditions and cannot be fixed
without a full rewrite. This commit break more things than it solve
and the code is in the middle of a transition. This will be solved
by future commits addressing the code quality (after the refactoring).