Optimized Version.StringComp and Version.NumComp, also tests

Profiling results: http://i.imgur.com/SAUoMLD.png
Fixed bug comparing strings of different lengths in Version.StringComp

Also made the code much, much simplier. :)
KSPVersion caches its Version object

(cherry picked from commit 9981229609624421fb98bbeabe8c5ece55d9ca5a)
Made KSPVersion.VersionObject() a private method.

This way other code can't call it when we're not in a long-object state.

Would be nice to add an explicit check here.
Merge pull request #486 from pjf/partial_482_optimisations

Optimise version comparisons