The need to strictly enforce valid JVM Locales really only makes sense for the (JVM) localization utils. The translation fns can be more lenient, using their normal fallback mechanism when given an invalid locale. Also in this commit: * Switched from `Exception`s to `ex-info`s. * Ring middleware improvements, mostly allowed by new distinguish between JVM and non-JVM locales. * General housekeeping.