Simplify syntax and general cleanup

Instead of specifying a url and a url builder, allow the url to a be a
string or a function to accomplish the same end.

If a string is provided, just concat the base url to the completion
value. This case is quite common.

If a function is provided, it must produce a base-url with no args and a
complete url with one arg. This allows for a lot of flexibility.