Start moving stuff from mainmenu.c to separate files.
Start splitting the old mainmenu scene to separate files.

This commit is likely to burn our house down with lemons. Be careful!
A huge pile of gui component cleanups.

- Move strdup stuff to a compat.c/.h file
- Move stuff over to component.c/.h, add some boilerplate.
A generic sizer and widget components, more abstraction, etc. etc.
Add new filler and label gui components, add submenu feature, and start working on configuration menu.
Convert textslider to work with new GUI system
Make textselector work with new GUI system, and add more items to configuration menu.
Implement the gameplay menu with the new gui system
Make arena menus work again
Basic video menu functionality. Add userdata field to menu sizer.
Video confirm menu works.
Network game main menu works.
Textinput works again, network connect menu reworked.
Network connect menu works.
Network listen menu works.
Collect all menu gui headers to a single file.
Start working in input menu
Custom keyboard input config menu now works.
Some code cleanups
compat.h changes