In this commit, I changed the way that hatches are created. Previously, the program would collect relevant Svg objects in recursivelyTraverseSvg and then later in the effect method generate hatches or crosshatches and detect interstices.
This lead to bug when multiple complex shapes were selected at one time.
To prevent these types of grouping bugs, I altered the recursivelyTraverseSvg file to create individualized hatches for Svg objects when they are found while parsing the tree. Then in the effect function these hatches are paired with their parent object via joinFillsWithNode.
To accomplish this, I only needed to alter the structure of the program. The underlying functions which create the hatches haven't been changed. The largest looking change is the shift left I had to do to the majority of the effect function thanks to an if-statement that has been moved from the effect function to the recursivelyTraverseSvg function
Hatch fill now produces beautiful smooth curves that fill most
reasonble shapes. Giant thanks to Sheldon B. Michaels for a lot of hard
work on this!
Closes issue #36.