put more useful information into `SpriteMap#inspect`
enhance sprite map caching by storing an MD5 hash in the PNG

* Generates the cache key by creating a MD5 hash digest of the passed sprite options and the collection's modification times.
* Checks if the cache should be busted by reading through the file's data until we run into the cache key.
  * The main reason we don't use ChunkyPNG's `metadata` functionality is because it is really really slow. Reading through the file's data until we hit the cache key is exponentially faster.