mostly just removing C-style casts and replacing the win32 LO* macros with constexpr functions, because they suck
(also, add a gitignore scoped to msagent.js to ignore the obj/ of building the WASM decompression code)
This implementation isn't perfect (sometimes an animation can get stuck playing), but it does work for the most part.
(All animation playing logic is async/promise now, which is fine because we only ever used the promise versions)
Now rows are not read and it doesn't use a BufferStream at all. Probably inconsequential for performance or memory usage but it's a cleaner way to implement it.