This adds functions to check if a `LayerGroup` is visible or locked. Additionally, visibility and the lock state is now inherited. E.g. `Layer`s that are the children of a hidden `LayerGroup` will also be hidden. This does not change their stored visibility. It just means that the function `is_visible()` on the layers will return `false`. The same applies for locking.