Add Type.isCompatibleWith; basic pointer tests.
Add Type.qualify function to easily add qualifiers
Rename GetSpelling -> getSpelling
Remove cv params for ConstantArray/IncompleteArray

Qualifiers don't make sense for arrays.
Add assertCast function to tests

Prints better error messages when assertions fail.
Add type.is{Less,More}Qualified and pointer tests
Add record cast tests
More pointer cast tests for incompatible pointers
Add enum cast tests
Allow casting pointer to/from void*, and add test
Add test casting void* <-> function pointer

This is not allowed by the C spec, but it seems clang and gcc allow it
without warning.
Add function cast tests
Add istanbul for code coverage
Add typedef tests, integrated with other tests

Whenever assertCast is used, it will test the following:
a -> b
T(a) -> b
a -> T(b)
T(a) -> T(b)
T(T(a)) -> b
a -> T(T(b))
T(T(a)) -> T(T(b))

where T(x) means "typedef of x"
Add a few more typedef tests

* Cast pointer -> same pointer as typedef
* Check for qualifiers propagating through typedef:
  typedef const char t;
  typedef volatile t t2;
  // t2 is compatible with "const volatile char"
Refactor canCastTo/isCompatibleWith to use helpers

This makes it easier to see how the functions work.
Add cast for "const void* -> void*" (should warn)

This breaks some tests (that are incorrect), so I've disabled them.
Add/fix cast tests for qualified pointers

Also add is{Less,More}OrEquallyQualified, with tests.
Added Type.unqualified, to remove cv.
Fixed casts from const char* -> void*. Still needs a test.
Fixed casts from char** -> char*const*.
Fix differently-qualified pointer cast test

This now tests that casting between pointers to pointers to values with
different qualifiers is not allowed. e.g.:

const char** -> char**
char** -> const char**
const volatile char** -> char**
Add test for casting qualified pointers -> void*

casting from <type>* to void* (and vice versa) is special -- qualifiers
are not checked normally.