Factor out SiteDirectory and SitePicker from Site.
Move getAbsolutePath() logic into SiteDirectory.
Factor out parts of Site into SiteInitState.
Rename parameter $root to $root_directory.
Change SitePicker signature: Now the only internal variables are for the information from the environment.
Change signature of SiteInitState to make it unit-testable (what remains is the drupal_valid_test_ua())
Pass $test_prefix as a constructor argument in SiteInitState.
Introduce a dedicated SitePathNotInitializedException