Make backtracking stack allocate memory more efficiently

Replace simple linked-list stack with a chunk-based system. This makes the engine roughly twice as fast on my machine.

In this commit, each MatchingStackNode descendent is given a getSize() method. The next step in improving this will be to remove getSize() and replace it with having every popping method of every MatchingStackNode descendent pop itself, by passing its size to stack.pop().
Prevent debug build from giving a (harmless) warning about use of an uninitialized variable
Fix unnecessary extra memory allocation in numeric mode
Make integer type definitions possibly more portable