Removed ItemInfo::null

This should not be necessary. In QML the isNull property was nowhere
used, but anyway a comparison with null should work just fine.

On the C++ side, isNull was also not used, but in fact the returned
item is being checked against 0 for some debug warnings (which would
not have worked until now).

Finally, nobody owned this ItemInfo instance, and passing it to QML
would have risked it being deleted by the garbage collector.
Disabled clearing before rendering

We always expect the screen to be entirely covered, so this saves a few
GPU cycles.
Fixed bug in sprite loading

When an image set was encountered in a sprite definition, the case where
the image was already loaded was not handled correctly. Instead it would
wait indefinitely for a status change that already happened.
Added a window which displays loaded resources

Can be opened with F10.
Fixed possible crash on shutdown

When deleting SpriteDefinition instances during shutdown it could happen
that an ImageSet that was deleted as a result would try to decrease the
reference count on an ImageResource that had already been deleted.

Also switched the two QMap instances in ResourceManager to QHash, which
should be a little bit faster since it does not bother with sorting its
contents.
Added support for tileset margin and spacing

Also tried to reduce the amount of calculation done for each tile a
little by remembering more about the current tileset.

Closes #44
Fixed the timeout on unused resources

The CACHE_TIME was used as milliseconds but documented as seconds.
This changes the timeout from 60 milliseconds to 30 seconds.

It may take up to 40 seconds for resources to be cleaned up, since
the cleanup happens every 10 seconds.
Fixed possible QML warnings in CompoundSprite

Apparently it is not a good idea to reference 'parent' in a Repeater's
delegate, even when it is explicitly set. I was still getting warnings
sometimes.
Fixed status page eating mouse events

Use 'visible' in addition to 'opacity' because setting opacity to 0 does
not prevent mouse events from being consumed. Only setting the element
to invisible does that.
Use JSON for the serverlist