Define dependency on backports, and provide abstraction around it

We removed the dependency on ActiveSupport, which was a bit premature. It still worked because Virtus depends on backports, which provides it's own version of string inflections. I've put all the dependencies in a single file and class, and thereby provide a clear path to get rid of the dependency whenever someone feels like figuring out the mess of activesupports testcases so we can be sure our cloned implementation is correct.