Modern casting

Added a flag to warn on C style casts.
Removed all C style casts, and replaced with C++ casts.

The issue with C style casts is that it can actually be 4 different kinds of casts, and they're all hidden under the same syntax, meaningful as well as horrific casts. Also the C++ cast syntax is uglier (which is good).