FontAtlas process to add missing glyphs
---------------------------------------
- Missing glyphs are first detected in TextLayout::getLayoutForText(), as it
  iterates through the string it is being asked to layout.
- TextLayout::getLayoutForText() takes a MissingGlyphCallback parameter for
  this kind of situation, and calls that callback's loadMissingGlyph()
  method when it encounters a missing glyph.
- loadMissingGlyph() will typically be implemented by the calling object, which
  will typically be the current Drawer. The following assumes the
  GLImmediateDrawer and FreetypeFontAtlas classes are being used, but the
  principle is the same regardless of the specific implementation.
- GLImmediateDrawer keeps a hold of the FontAtlas for every font it loads via
  loadFont().
- When its loadMissingGlyph() method is called, it then looks up the FontAtlas
  for the relevant font, and calls the Atlas' getMissingGlyphData() method.
  This method will attempt to load the missing glyph from its font file, and
  return a bitmap of the glyph.
- FreetypeFontAtlas also keeps track of the position of the last glyph rendered
  to the atlas, so it knows where to place any new glyphs. If a new glyph would
  not fit in the atlas, loadMissingGlyph() will set its needNewAtlas parameter
  to true.
- In loadMissingGlyph(), GLImmediateDrawer either:
	- Copies the new glyph image data into the current font atlas texture via
	  glTexSubImage2D()...
	- ...Or, if a new texture atlas is required, creates a blank texture of the
	  same dimensions as the original texture atlas, and renders the missing
	  glyph at its top left corner.
- loadMissingGlyph() then updates the relevant font's FontMetrics with the data
  for the new glyph, and returns an iterator to that glyph, so that TextLayout
  can insert it into its layout.
