Only request tiles which have out-of-date content

Instead of constantly requesting tiles and throttling requests, only
request tiles if the application signals that the layer contents have
changed.
I went back and forth on this quite a bit. My original thought was that they could be shared, but that means that any application using rust-layers would need to manage Epochs itself (like servo). That kind of interface might be too complicated for every application.

Currently the contract is that the application/embedding library must call Layer::content_changed when the surface content changes. If it calls content_changed twice before adding buffers, it should call add_buffers once with the latest contents. Adding two sets of buffers will trigger this warning.

I believe we should think carefully about a way to keep the interface simple between the two layers, while still properly handling receiving old buffers.