BundleFunctions Factory

Adds `BundleFunctions` factory to create translation functions with different semantics regarding order of operation and unknown resource keys.

As I was updating `TranslateBundleFunction`'s constructor to be public, I realized it is limited by implementing `TemplateFunction` to *only* operate prior to template evaluation. I also thought it was limiting that it in the case where an unknown resource key was provided it returned the key itself. The new class returns functions that can operate pre- or post-evaluation and that can return either `null` or the key itself in the case of an unknown key.