Massive performance increase!

- Only allow one of each node at any given step. This reduces complexity
from numAspects^numSteps to numAspects*numSteps. Can now find a path of
length 100,000 (possibly greater)
- Add check so that it can handle a failure to find path (if many
aspects are disabled)
- Change awt.List component to JList, so that we can update it with the
whole list at once, instead of doing it one at a time.
- Add a "copy to clipboard" button (just in case, could be useful for
large lists, so we don't have to scroll)