Reworked how onscreen messages work

Each message is now an object