Review: FileFormat registry refactor

Jeremy Selan <jeremy...@...>

FileFormat registry refactor

The registration mechanism is now less fragile, using the 'construct
on first use' approach rather than relying on static initialization to
register each format. This is a more portable implementation (should
work on windows), and also avoid some issues we've been seeing when
using gcc debug versions of the library.

-- Jeremy