Implement new classes without global variables, add support for tag bindings

## Classes

### DotLangParser
- getFile: read file, return list array of cleaned strings
- parseFile: read lang file and return array with extracted values. If is reference files, extract meta data.

### LangManager
- loadSource: load a lang file
- analyzeLangFile: analyze langfile (identical strings, missing, errors, etc.). Fixed loose comparison on identical strings in the original code ("01" and "1" were considered identical).
- isStringLocalized: return true if string is localized
- buildLangFile: create .lang file content
- manageStringExceptions: manage exceptions for some strings in lang_update
- loadPoFile: load po file, return an array of strings [original]=>translation
- importLocamotion: import data from Locamotion (Github repo with .po files) **not tested**

### Project
- getReferenceLocale: return reference locale for a website
- getSupportedLocales: return supported locales for a website or a single file in a website
- isSupportedLocale: check if locale is supported by website
- isCriticalFile: check if file is marked as critical
- getWebsiteName: get name of website
- getWebsiteFiles: get list of files for website
- getLocalFilePath: return full local path for a file
- getPublicFilePath: return full public path for a file
- getPublicRepoPath: return path to public repo
- getUserBaseCoverage: return coverage of l10n user based

### Utils
- leftStrip: function to clean meta tags
- cleanString: remove extra tags like {ok}
- startsWith: moved from DotLangParser
- secureText: sanitize text
- 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 (not tested)
- checkEOL: return end of line character
- fileForceContent: save file to path, creating folders if necessary

Added tests for new classes and functions.

## Views
- Updated views to use new class
- Listlocale, Translatestrings: moved css into external .css file
- Error view: manage missing tags, extra tags, tags enabled with missing strings.
- Translate strings: display a tag near strings bound to tags.
- Activation: ignore files with Python errors.
- json (api): return HTTP code 400 if file or string is not supported, don't display "{ok}" in strings. Keep "callback" parameter in links.

## Other
- Added documentation in readme.md for available URLs, lang_update syntax (moved from lang_update), .lang file format
- Template: Added memory consumption
- Removed {l10n-extra} support
- Associated priorities to array for each website
- Removed /read.php
- Removed unused view seriallocalestatus.inc
- Moved lang_update and mark_active into /scripts
- mark_active: switched to internal functions instead of parsing external JSON file
Absolutely yes.