More style system

I believe this is all the preparatory work discussed in #1006 and #1057: The new 'style' crate only