Image feature detection

This pull request adds support for feature detection and image smartcropping into Wagtail.

It performs face/feature detection and crops images based on their content.
To me, the harm is that it's breaking encapsulation. There's a lot of internal complexity in the image processing code right now, which is why I think it's due for some major refactoring. If the complexity is kept internal then we should have a relatively easy time of doing that - but this is a place where that complexity is poking out into external APIs and starting to complicate interactions between components.

At the moment, Filter has a really simple interface (or at least, that's the intention...) that takes an image as input and returns a processed image as output. If we stick to that interface, then there's certain bits of reasoning that we can make regardless of whatever funky algorithms are at work inside the filter - such as "a filter will always generate the same output image for a given input image" and "a rendered image can be cached using the image ID and filter identifier as a key". Introducing focal point into the mix might not seem like a huge departure from that, but bear in mind that focal point is an internal detail of one particular filter type. Who knows what other parameters we might introduce for other filters in future - colour profiles? clipping polygons? - we don't want people to have to juggle all those concepts in their head just to get an overall "big picture" view of Wagtail's image API.

Aside from that, I'm keen to minimise schema changes as much as possible - in particular I'm concerned about what the migration process will be for sites that have defined a custom image class, like RCA.

Refreshing renditions when a focal point is changed: this can be done by deleting the related Rendition records from the database when an image is saved with a new focal point setting. That wouldn't deal with front-end caches - I don't think that's a major concern (I think it's unlikely that a focal point will be changed after the image is already in use, and the impact of having a stale image in the cache for a few hours is fairly inconsequential), but if need be, it could be done through the "official channels" by having a signal for the wagtailfrontendcache module to cache, as we do for pages.