A unit testable teamcity client that supports multiple versions of teamcity