Major overhaul of multi-instance KSP

- Split management of multiple instances into KSPManager
- No need to manually save or load from registry.
- Added GetPreferredInstance() as the best way to find the user's
  preferred instance, if a single preferred instance exists.
- Added PortableDir() to install portable installs.
- Decoupled transactional file transactions from KSP class.
- KSPPathConstants in their own file
- KSPPathUtils in its own file.
- Some tests, but not enough, darn it!

For #125