#warning is not portable, replaced with KJ_WARNING

#warning directive is not portable. Visual C++ does not support it.
Replaced with custom KJ_WARNING macro that is portable across compilers
that we target (visual c++, clang 3.2, gcc 4.8+).

This generates "notes" instead of "warnings", but at least works across
compilers.

On Visual C++, formats the output so we know where the warning/note is
generated. We follow standard Visual C++ output. so the IDE catches
those warnings as actual warnings, double-click on a warning shows you the
offending code, etc.