Split auto-detect driver into separate drivers; add Factory, Stub, and HHVM drivers (and unit tests)