Glyph actions

Covers https://github.com/KSHSK/WAVED/issues/227, https://github.com/KSHSK/WAVED/issues/206, https://github.com/KSHSK/WAVED/issues/286, https://github.com/KSHSK/WAVED/issues/295

Edit: Incidentally also covers https://github.com/KSHSK/WAVED/issues/269
>If I understand your code, this version is returning the exact same thing it was returning before. You're just using two arrays of indirection to get there.

Yes. I'm just setting things up so that it actually looks like we're returning an array and sets this up for later so people understand what to do. I'll clean it up and make it prettier, but making it clear that we're returning an array here is important.