don't fail, if a CmdOptsGroup is registered more than once, if the definition is the same

Paver executes the pavement.py file more than once, so any groups defined on the toplevel are defined several times.
bugfix: always add the task name to the shared_with list (not the task itself or the function)
register_cmdoptsgroup returns a proxy object that can be used to access the options
support default values for options accessed via the proxy object