Improve internal warning mechanism

Similar to how we've wrapped the deprecation messages, this add's some sugar to our warnings. We could also look at implementing a warning formatter similar to the deprecation formatter if that takes someones fancy?