Make the Formatter.Custom API more sensible (take in format fn first, pr...

...ecision optional)