FPS averaging

* rework dropping frames
* change meaning of Timer.elapsed
* fix some Timer.run bugs
World.fps, World.update_fps, fix FPS averaging bugs
move update FPS averaging and tracking to Timer

Now Timer won't wait a whole frame if it ran slow previously, allowing
for full framerate updates when drawing slows things down.
initial ResourceManager and integration
minor documentation changes
resources work

* write ResourceManager.register
* force_load argument to ResourceManager.load
* graphics that load resources take resource_pool/resource_manager arg
* some doc changes
font and text resource loaders (and use them)
resources stuff

* res in doc
* ResourceManager.pool_users
* ResourceManager.measure
* fix res.measure_img
* make ResourceManager.{resource_loaders,pools} available as lists
update tutorial to use res
resource pool caching

* drop pool cache/don't cache if it has no users
* World.{use,drop}_pools
* the game uses the default pool
text.TextRenderer, and integrate into everything else
add text module to documentation
Grid.tile_at, and use it in the tutorial

* plus some documentation fixes
DummySettingsManager.{on_change,rm_cbs,changed}

And util.{takes_args,wrap_fn} to use in these.
change how SM on_change works, and use in Game
input event callbacks get no args if take none
World.quit
settings work

* move translate_dd to settings module
* DummySettingsManager.add_types
* filter_caps argument to DummySettingsManager
cmps in settings
double-click buttons