Centralized OS detection and added tests for the ExecutableLocator
Shade and relocate the StringUtils class into the har

This serves two purposes:

1. Make the jar self-contained again
2. Not depend on the Plexus version used at runtime

Purpose 1 is the major reason for this change, and since the class is
relocated there should be no problems.