`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 commit expands tabs to spaces (ts=4) in all the files under src/
and test/.
Until now we had two wildly different code styles with C using tabs and
new C++ using spaces. It is painful to maintain as none of the commonly
used tools support this kind of setup and in reality is needless, as we
can simply convert all the sources to spaces and have opened PRs do the
same, where needed.
Additionally, trailing whitespace has been removed.
Test of `paint_launched_freefall_tower_section` is invalid. Do note this
function [expects another element right past the one just
passed](https://github.com/OpenRCT2/OpenRCT2/blob/d00aa2c/src/ride/thrill/launched_freefall.c#L147):
```
rct_map_element * nextMapElement = mapElement + 1;
```
but you pass only a single map element, which is not marked as last for
tile. The same prevails throughout other tests.