Themes in Core v1

Fresh branch from a clean master
Also, defaults will not be exposed once we move over to the new fonts API.  I think restore should remain public, but definitely _setThemes is a needed change.