Refactor imagery loading.

This fixes the crash that previously occurred in this branch when zooming
in past the available imagery, and makes the code much less insane.

At this point performance appears to be outstanding, but memory usage is
higher than before.  I'm not sure why yet.