Add support to explicitly choose a public uri.

1) public.uri is optional, and it is used primarily to test the service running it locally, and using a publicly accessible proxy service to it your local service. 

2) Consolidate the function and method definitions to use separated arguments instead of tuples.