Remove 'draper' from Gemfile

Job done!

Hah, not really, just removing the gem - let's see what breaks.
Remove ClassificationPresenter entirely

It provided one method that is better expressed (and tested) as a traditional helper method.
Remove Draper from presenters/api

Mostly just replacing with Struct based inheritance and explicitly providing a view_context.
Fix api controllers to work with new presenters
Remove draper from presenter tests

In its place we make the controller.view_context available instead.
Remove draper from the DocumentFilterPresenter (and subclasses)
Use new draper-less DocumentFilterPresenter in controllers

We had to add some delegate calls and pad out the Filterer methods to make this easier, as the DocumentFilterPresenters are the first we've encountered that are actually used as a decorator so we have to be able to call methods on the decorated object.
Edition presenters no longer use Draper
.to_model is a better solution than .is_a? Draper::Base

Not least because Draper is going away!
Add generic decorator for collections to present the items within

It's based on the most recent version of this thing in Draper, but it's been tweaked for our usecase (see comments in the file for exactly how we've tweaked and what the base version was).
Use the new CollectionDecorator in the edition search controllers

e.g. Publications, Policies, and Announcements.  It's not entirely clear if we can just drop these intermediate decorators and just use the collection decorator directly.
Use .new instead of .decorate for edition presenters in frontend
Remove draper patch for localization
Fix functional tests to cope with new collection decorator

Mostly this involves dereferencing the underlying collection from the decorator.
Remove draper from world org presenter
Provide a whitehall based class for decorators

We do this so we can extract some of the behaviour around delegating methods to the decorated class.  Turns out we need to make sure that any AR classes we are delegating to have been fully realised before we ask for their instance_methods, otherwise our delegation falls through to the default method_missing, which might pick up on attributes, but equally might not.
Add more methods to the list we delegate

Specifically all those helpful methods like .blank? etc that we get from rails.  Maybe we should just delegate everything we haven't specifically overridden ourselves.  That might be better?
Remove draper from Role, Roles, and RoleAppointment presenters

Made RolesPresenter extend the CollectionDecorator, which is sort of interesting.
Remove draper from PersonPresenter
Remove draper from the Promotional Feature presenters