Add difference tiles for TimeSurface

Currently the SurfaceResource only offers rendering tiles of a single surface. This adds the functionality to render the difference between two TimeSurfaces.
It could be static, but some of the patterns you see are vestiges of Spring. Even outside the Spring school, some people consider static components heretical. Eventually we should get to a point where we've got a sort of hierarchy of scopes/lifecycles: an OTP Server, which contains OTP Routers, each of which handles individual Requests. Each level would have direct access to those above it, and each Router would hold a separate instance of all the OTP components it uses, just in case there is any router-specific configuration we want to isolate from the other routers.