This version uses variable-length links, but I think collision detection performed after initial positioning at state centroids would look better.
This way, we don't need symlinks (which don't work on Windows). This commit also simplifies the structure of the flare.json file, so that we don't need to tricky conversion of the JSON map—it can be read directly by the hierarchy layout.