Further improve font management.

With this commit, the server no longer mutates an element when setting
it's font. Instead, it now provides information so that an element can
change it's font itself.

This fixes issue #8.