Rework psuedoelement infrastructure so they can be their own boxes.
Add support for psuedoelements/classes.
Code cleanliness fixes.
Draft alternate API.