I like this `foreach` a lot.

Still, I think it should be a member method in `Handle.Storage`. That would allow declaring the resources for the program outside the `main` method, and then just smth like this:

    class MyProgramStorage extends Handle.Storage {
      // various resources
    }

    def main(...) {
      val myStorage = new MyProgramStorage()
      acquiring(myStorage) {
        // my program
      }
    }

You could still acquire the handle as you go, but I'd add a different `acquire` overload for this:

    def main(...) {
      val myStorage = new MyProgramStorage()
      acquiring(myStorage) {
        val texture2 = myStorage.acquire(new Texture(...) { ... }) // this one needs to be released *and* remove from the storage on the exit for the block
      }
    }