Replaced some type definitions.

As discussed in WrinklyNinja/CBash#4.

* The basic integer `#define`s were removed completely, and replaced with `<stdint.h>` usage.
* The `FLOAT32` definition was replaced with plain `float` usage.
* All other uses of `#define` for defining types have been replaced with `typedef` usage.
* The various `ARRAY` type definitions now use the types they're arrays of.
* The API no longer uses the `ARRAY` types, instead the direct underlying types are used.
* The API's declaration of the `Collection`, `ModFile` and `Record` classes was moved to `Types.h`.
* The API's definition of `NULL` was replaced with a `<stddef.h>` include.
* The content of `Types.h` was enclosed in `extern "C"` braces.

All notable changes occurred in `CBash.h`, `CBashConfig.h`, `Types.h` and `MacroDefinitions.h`. The rest of the files are just search/replace changes for `<stdint.h>` types, with the exception of the `compSize` variable, which was using the `SINT32` type (IIRC) when it should really have been using `uLong` (which is supplied by zlib).

I think it's worth keeping this as 3 separate commits so that the majority of the non-search/replace changes can be seen without pulling them in.