fix Zone and KeyboardZone bugs

Zone was not working since the physics stuff was done too early, due to
the change in the previous commit that was not really required.

Also added a method to Zone that specifies whether it requires
setModified to update its draw, which KeyboardZone's new
IndirectDrawChildZone and TextureZone set to true.

Also changed KeyboardZone to use the IndirectDrawChildZone, instead of
setting itself indirect, so that we can add children to it that are
outside of its bounds, which is useful since we override add() to also
add a keylistener to the parent KeyboardZone.