`typedef struct/union/enum name { ... } name_again;` is not needed whe compiling C++, moving the name at the back to be in front of the object and removing `typedef` makes it usable the very same way.
This also replaces typedefs with the using keyword. They have better readability, especially for function pointer types, and would allow more flexibility when used with templates.
This removes most usages of the separate flag, instead relying on ride groups to do its job.
Research is more complicated and will follow in another commit.
* Add ride groups
* Convert ride groups to C++
* Fix linking and crashes in Xcode
* Comment out .field syntax to make Visual Studio happy
* Fix alignment, fix changelog, cleanup
* Properly save ride group index in the ride object repository and bump its version
* Fix fallback behaviour when the ride entry is not available or not invented
* Fix include
* Rename RideGroup to RideGroupManager, add const, cleanup
* Break after finding matching ride group