Issue #51: discriminacion y administracion de categorias de productos. - CategoryTrytonService.import_from_external: lee categorias asociadas a productos salables, hace upsert por external_id (fallback nombre), preserva description/alternative_name/active, reporta checked/created/updated/untouched/failed - upsert_category compartido y reutilizado por ProductTrytonService