feat: add legacy SDK fallback for schema generation and coglet installation
When SDK version is explicitly pinned below 0.17.0 (e.g. COG_SDK_WHEEL=pypi:0.16.12),
fall back to runtime schema generation and skip coglet installation:
- Add GenerateCombined() to merge predict+train schemas (fixes missing /trainings)
- Add canUseStaticSchemaGen() with binary availability check (graceful fallback)
- Add isLegacySDK() to skip coglet for SDK < 0.17.0
- Add DetectLocalSDKVersion() to resolve SDK version from dist/ wheels
- Restore GenerateOpenAPISchema() for legacy Docker-based schema generation
- Add legacy_sdk_schema integration test