Support option() use in VService and subclasses

For consistentcy with VTask
Expose access to options for third-party control

You may want to use the sparts library inside another system that
controls the argparse lifecycle. In this case, use
sparts.get_options(<service or task>) to get the option name(s) and
kwargs that can be used with argparse.ArgumentParser.add_argument().

One example is pytest. In order to expose your service's or task's cli
options as groups when running py.test cli you can use the
pytest_addoption plugin like so:

conftest.py:
```
from sparts import sparts, vtask

from my_service import MyService

def pytest_addoption(parser):
	group = parser.getgroup('MY-SERVICE-AND-TASKS')
	service_opts = sparts.get_options(MyService)
	for sopt in service_opts:
		group.addoption(*sopt.opt.opts, **sopt.opt.kwargs)
	for task in set(MyService.TASKS).union(vtask.get_registered_tasks()):
		task_opts = sparts.get_options(task)
		for topt in task_opts:
			group.addoption(*topt.opt.opts, **topt.opt.kwargs)
```
Provide a customized ArgumentParser

Allows a developer some extra control on the ArgumentParser behavior:
- to use fromfile_prefix_chars or any other __init__ arg
- or to use an instance of an ArgumentParser instantiated by another
  library.
Support nargs in option()
Migrate VService to use options()
Bugfix vfb303 getOption

options are strings