Language: Refactoring the language system to simplify the code

The current multi-language system is unnecessarily complex. This PR tries to improve on that and simplify the code further. This code is not necessarily bug free and needs extensive testing. There is one change that is introduced with this: Non-SEF URLs have the ISO code as &lang= parameter. This means a change in the URL for non-SEF sites. The question is, if that is acceptable since non-SEF sites are basically not encouraged or widely used.

The behavior also is slightly different concerning discovering the right language. This should be discussed in this PR. Basically, when a user accesses a URL, the URL should define the language, except when there is no language set in the URL. The current behavior is somewhat confusing...