Added custom switching of tabs

Summary: WinForms TabControl is terrible if you want it to look different

- In order to prevent painting issues, tabs have to be the full width
- Tab sizes must be fixed, not fluid
- Tab rectangles must be calculated separately, because the TabControl has to have fixed tab sizes
- Added function for manually switching tabs, which is used on the click handler
- Click handler has to manually detect which tab is selected