Key Map, Build, and Multi-Cursors

I finished up the keymap code this week. It supports defining keys by letter and by scancode; it's SDL's virtual scancode, so if you happen to know your real keyboard scancode, it'll likely not work. Next, I changed the build system and my main function to run tests based on which file was modified automatically.

Last, I started some multi-cursor code, so it'll support deleting newlines and such; however, I didn't like the initial code. Finding out which character is before the cursor isn't too hard, even while considering it might be a multi byte utf8 character. But there are edge cases where cursors overlap, displaying the correct column number when a cursor deletes a newline, and moving around semantic tokens. This might be a pain to implement, even if it wasn't multi-cursor