Implement new classes, stop using global variables

DotLangParser:
- parseFile: read lang file and return array with extracted values
- Keep old legacy code while waiting for views to use the new code

LangManager:
- loadSource: load a lang file
- analyzeLangFile: analyze langfile (identical strings, missing, errors, etc.)
- isStringLocalized: return true if string is localized
- buildLangFile: create .lang file content **UNTESTED**
- manageStringExceptions: manage exceptions for some strings in lang_update **UNTESTED**

Project:
- getReferenceLocale: return reference locale for a website
- getSupportedLocales: return supported locales for a website or a single file in website
- getWebsiteName: get name of website
- getWebsiteFiles: get list of files for website
- isSupportedLocale: check if locale is supported by website
- isCriticalFile: check if file is marked as critical
- getLocalFilePath: return full local path for a file
- getPublicFilePath: return full public path for a file
- getPublicRepoPath: return path to public repo

Utils
- secureText: sanitize text
- leftStrip: function to clean meta tags
- cleanString: remove extra tags like {ok}
- startsWith: moved from DotLangParser
- highlightPythonVar: highlight Python vars in strings to display errors
- isUTF8: return false if file's encoding is not UTF-8 or us-ascii
- logger: log message to console, quit if requested **UNTESTED**
- checkEOL: return end of line character **UNTESTED**
- fileForceContent: save file to path, creating folders if necessary **UNTESTED**

Add tests for new classes and functions.

Views:
- Updated views to use new class
- Listlocale, Translatestrings: moved css into external .css file
- json (api): return HTTP code 400 if file or string is not supported, don't display "{ok}" in strings.

Template:
- Added memory consumption

Other:
- Removed {l10n-extra} support
- Associated priorities to array for single website
- Removed /read.php
- Removed unused view seriallocalestatus.inc
- Moved lang_update into /scripts