A whole bunch of changes. It's actually working stably!
Changes:
        * A bit of code clean-up and optimization, but that mostly came
          through other things
        * Finally learning the relationship between new and delete and
          that heap objects are a thing. I think I've taken care of all
          of that stuff (which was part of what was causing SEGV so
          often), but I will check later.
        * Fixed the bug where rows were not removed properly, which
          caused there to often be an extraneous row at the beginning.
        * Added code to ensure that a pattern is not changed while it is
          playing. ATM it only detects if a pattern is playing, but I
          will later make it check to see if the specific one is the one
          currently playing.
        * Added a row struct to the PatternMaker so it's not searching
          through the rows looking at the names to find the one it
          wants.
        * I think that's it but if there's anything else it was all in
          the name of stopping the program from crashing.