Some type tidying.

* Moved the class declarations into `Types.h`
* Wrapped everything in `Types.h` in `extern "C"`.
* Removed usage of the various `ARRAY` defines out of the user-facing
code.
Tweaked array and compound type definitions.

Now they use the definitions of their basic type.
Replaced type defines with typedefs.

Also switched to using stdint types and removed the FLOAT32 define.
Converted API-visible classes to structs.
Merge pull request #12 from WrinklyNinja/macro-replace

Replaced some type definitions.
Minor update to documentation.
Readme tweaks.
Removed C compatibility note from readme.
Moved the API_FieldTypes enum.

Closes #10. Also added a little more documentation for the field-related
functions.
Started documenting fieldTypes.
Removed unnecessary repetition in docs.