Themes in Core v1

Fresh branch from a clean master
I would flag this as private and expose it with a leading `_`. I don't think extensions should monkey with this.