Fix the way rover wheels rotate when being attached.

In the process replace the quaternion code that only works
for nodes oriented in 6 hard-coded directions.
Destroy and re-create the CollisionEnhancer object when grabbing/attaching.

This object contains the current position of the part in a private
field and in some circumstances resists it being changed. The only
way around this seems to be to delete and re-create it as needed.

Specific example of bad position: grabbing a rover wheel when on ground.
Drop the grabbed winch head when EVA boards a vessel.
Tweak the rover wheel EVA placement data to avoid clipping it into ground.
Fix solar panels taken out from containers.

Unless OnLoad is called, they don't produce any power and spam
the debug log with messages about nonexistant resource with id 0.
Fix vessels being seriously messed up by unlinking pipe cycles.

Specifically, connect A to B, B to C, C to A, then unlink A-B or B-C.
The C to A connection tries to upgrade to docking while the undocking
is still in process, and breaks everything.
Add the small non-extending ladder to the grab-capable parts.

The size is set to 5 because it is close in size to a cubic strut,
especially if you consider that without anything to attach on, the
ladder is just three bent bits of metal. Also, 6 of these ladders
are just about enough to match the big ladder, and that's 30.

It is also necessary to fix the handling of isTrigger or the ladder
stops working once grabbed until save/reload.
When docking with KAS, let the biggest vessel keep its control state.
The rescaleFactor multiplication when creating parts seems redundant.

It actually leads to different size of KSP and KAS-created parts.
Fix orientation of containers when attached to the container holders.

The previous changes to fix rotations broke this case it seems, so
some fixes to the node directions are necessary. Note that the new
orientations are more consistent with stock parts.
Don't let colliders on the tube objects exist even for one frame.

The most easily reproducible effect is a small jump in the camera
focus location when you press Link from EVA because of the rigidbody
CoM shifting away for one frame.
Add a check to avoid handling key presses when an edit field is active.

This seems necessary to avoid making the numpad unusable on Linux.
Preserve vessel control state when unlocking and locking the winch head.

When unlocking it is actually unnecessary to decouple and redock.
Locking can probably also be done in-place, but the code changes
part positions and will have to be heavily modified.
Don't hardcode joint types for unlocking the winch-linked port.
Delete and re-create the StaticAttach objects when on/off rails.

Otherwise the kinematic rigidbody can end up in the wrong position.
Refactor handling of pack/unpack events to minimize KASModuleGrab overhead.

This module is added to many common parts like batteries and RCS ports,
so it makes sense to reduce its overall idle overhead by using events
automatically provided locally via SendMessage instead of global hooks.
The grab module was even handling an event for the KASAddonPointer.

The callbacks also must be made public or protected, or it doesn't
even warn if you shadow the method in a subclass.
Remove the use of OnUpdate to re-link struts and hooks on vessel load.

Arguably here using a hook instead of a per frame callback is more
efficient. Also, OnUpdate has complications wrt the part being active.