Remove langs /w duplicates having lower rank
Remove langs /w duplicates having lower rank

- Remove locale/lang duplicates with lower rank/quality
- Use variable names for pattern matches

### Before
```php
$httpAcceptLanguages = 'en-US,en;q=0.1,de-AT;q=0.7,fr;q=0.5,de;q=0.3,DE-DE;q=0.3,en-US,en;q=0.8,de-AT;q=1.0,fr;q=0.5,de;q=0.3,de-DE;q=0.1,SE';
$prefLocales = Language::parseLanguageList($httpAcceptLanguages);
debug($prefLocales);
```

```php
 /plugins/FlexiCms/src/Routing/Proxy/CmsLinksRoutingProxy.php (line 66)
[
	'1.0' => [
		(int) 0 => 'de-at',
		(int) 1 => 'se'
	],
	'0.8' => [
		(int) 0 => 'en'
	],
	'0.7' => [
		(int) 0 => 'de-at'
	],
	'0.5' => [
		(int) 0 => 'fr',
		(int) 1 => 'fr'
	],
	'0.3' => [
		(int) 0 => 'de',
		(int) 1 => 'de-de',
		(int) 2 => 'de'
	],
	'0.1' => [
		(int) 0 => 'en',
		(int) 1 => 'de-de'
	]
]
```


### After
```php
$httpAcceptLanguages = 'en-US,en;q=0.1,de-AT;q=0.7,fr;q=0.5,de;q=0.3,DE-DE;q=0.3,en-US,en;q=0.8,de-AT;q=1.0,fr;q=0.5,de;q=0.3,de-DE;q=0.1,SE';
$prefLocales = Language::parseLanguageList($httpAcceptLanguages, false, false);
debug($prefLocales);
```

```php
 /plugins/FlexiCms/src/Routing/Proxy/CmsLinksRoutingProxy.php (line 66)
[
	'1.0' => [
		(int) 0 => 'de-AT',
		(int) 1 => 'se'
	],
	'0.8' => [
		(int) 0 => 'en'
	],
	'0.7' => [
		(int) 0 => 'de-AT'
	],
	'0.5' => [
		(int) 0 => 'fr'
	],
	'0.3' => [
		(int) 0 => 'de',
		(int) 1 => 'de-DE'
	],
	'0.1' => [
		(int) 0 => 'en'
	]
]
```
dereuromark/cakephp-tools,dereuromark/cakephp-tools,bancer/cakephp-tools,bancer/cakephp-tools