Terminallist in applauncher

Added a list of active CPU's to the applauncher panel, and lets you open/close their terminals.

The list updates automatically because kOSProcessor now maintains this inside itself:
```
        private static List<kOSProcessor> allMyInstances;
```
It knows when to add instances of itself to the list and when to remove them, based on hooks on KSP events for when the PartModule is initialized, and when the Part is destroyed or unloaded onto rails.

When the CPU part is unloaded because the ship goes entirely on rails, that PartModule is removed from that list.


You can get a copy of the list publicly with this:
```
    List<kOSProcessor> allOfThem = kOSProcessor.AllInstances();
```
But note, it *IS* a copy.  If you expect it to change you need to re-get it regularly.  This is because I didn't want to expose it as a direct reference publicly because that means you could remove or add things to it from outside and thus confuse its internal accounting of the list.

The applauncher panel now renders this list, as follows:
- Sort by vessel name (actually kOSProcessor.AllInstances() does this sorting work for you).
- Within each vessel, list each part that has a kOSProcessor PartModule on it.
- With each kOSProcessor part in the list, give it a button to open/close its terminal *and power it on/off, although I'm having second thoughts about that.

The panel is scrollable if the list of nearby ships and CPUs gets excessively long.

The above two were used to help me debug my nesting of the GUILayout operators: BeginHorizontal, EndHorizontal, BeginVertical, and EndVertical.  Because you call these from different places it's easy to make mistakes and make them mismatched.  So I added some tracking that counts nesting levels and reports them if you want, for debugging.