Compiler: Fix a regression in handling multi-dimensional arrays (introduced in 744d67b)

Fix imported from Pawn 3.3.4058.
Compiler: Revert "Fix runtime error in variadic functions that return strings."

Better fix by dvander will be provided later.
Compiler: Revert "Add #warning directive."

Probably not that useful.
Compiler: Fix indentation.
Compiler: Change __line to __LINE__.
Compiler: Use in-memory buffers for reading files, and handle newlines better.

Imported from https://github.com/alliedmodders/sourcemod/pull/63.
Compiler: Use hash table for global name lookups.

Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=4496.
Compiler: Fix enum field size was not taken into account when implicitly passed to a function.

Imported from Pawn 3.3.3930.

Example:

---

enum tag
{
  member[32]
}

new var[tag];

foo(const string[], size = sizeof(string))
{
    // size returns 1 before fix, 32, after.
}

public plugin_init()
{
    foo(var[member]);
}

---
Compiler: Improve/fix recursion detection.

Imported from Pawn 3.2.3664 and 3.3.3875.