Use a FactPresenter to store the logic for JSON representations

Rather than doing a manual slice (what this replaces) we're better off
keeping this logic contained within a model presenter so that we can
better abstract our data structures and presentation.