Fix `programming_languages` table to use globally stable identifier
## Problem statement
The `programming_languages` table is a table with `id`, `name`, and `color` columns. The table has a unique index on the `name` column. The real data for this table comes from Gitaly.
The `id` column makes this table inconsistent, and this inconsistent ID column is persisted in other tables (`repository_languages`).
## Proposal
1. Add a `language_id` column in `programming_languages` table, `bigint`
2. Update the Gitaly::CommitService to return the returned response `l.language_id`.
3. Update, or create the row in `programming_languages` with this `language_id`
4. All referencing tables will be switched to refer to the `language_id` column instead.
* `repository_languages`
* `analytics_language_trend_repository_languages`
5. Switch to use the `language_id` as the primary key of the `programming_languages` table.
6. Drop the `id` column.
issue