When we are finally statically linking bin/vm, we must be careful the order of
arguments to the linker. Gnnerally speaking, we shouldn't pass ldflags first
before object files because the order matters with the static linking.
To be specifc, we can't find library symbols used in the object files in this
order.
So, just reverse the order of arguments.
Previously, there was no problem because LLVM din't depend on any other library
symbols. But when OProfile is enabled this is not the case.

A depth of 0 is an invalid value here (the instruction in the
interpreter throws an exception). We shouldn't special case it here and
also removed the commented out implementation for depth = 1 since that
isn't correct anyway.

When one of the arguments to replace into the string is a string itself
and doesn't fit, the API of ruby_vsnprintf is that it returns the needed
size of the string. Handle this case and grow the string to that size in
that case.
Fixes #2196

The __kind_of__ call was only used in one place and can be replaced with
using Rubinius::Type that we now have. The JIT can also optimize these
regular methods well now, so having this doesn't give us anything
anymore.