Introduce Emitter and Attribute set

Things are a mess right now, revised the interface a fair bit and still
figuring out where to start with that.