De-hard-coded the export destinations.

These can now be enabled/disabled/extended at run time.
Refactored out external exporters completely.

Now we don't have to pollute the core class when adding or removing
exporters. The interface isn't exactly beautifully clean just yet for
someone to add an exporter, but it's getting there.