use static_cast when casting between void* and a specific pointer type

See this StackOverflow question:

http://stackoverflow.com/questions/310451/should-i-use-static-cast-or-reinterpret-cast-when-casting-a-void-to-whatever

But note that reinterpret_cast for this does work fine in practice, and is
defined to work fine in C++11 (assuming that change got through committee).

My reason for preferring static_cast is really that static_cast works,
so taking reinterpret_cast out of the big scary toolbox of C++ features
marked "use-at-your-own-risk", "here-be-dragons", is not necessary and
should therefore be avoided.
use static_cast when downcasting from Body* to a derived class

reinterpret_cast is incorrect for this purpose, and could result in
serious bugs.