Renamed render() to assemble()

 - cache() now returns cache usage
 - cache() is now mandatory
 - assemble() throws if any glyph's character is not in cache