(CDAP-378) Refactor Service implementation

- Cleanup cluttered code about ProgramRunner implementation for Service
  - Follow why other ProgramRunner model is
- Refactor ServiceWorker API to use configurer.
- Added support of @Property annotation
The name is set when the worker is added at the Service level, not from within the Worker. It shouldn't be part of the Worker as it's actually only the Service is interested in the naming, not the Worker itself. That makes the Worker more reusable across different Service.