support vcpu attribute

It doesn't fit very well with the design, but it works.

There are some bits that I wouldn't mid changing, but they'd take fairly major code overhauls.  For instance adding the product attribute to block multiplying attributes again seems silly, but if we calculate compliance completely internally lots of tests break.   Could be worth changing though.