(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
Shouldn't we also have a setName method, to allow user to set the name of a service worker via the configurer?
I understand that the user can do ```addWorker("someName", new MyWorker());```, but for most other programs, we also allow setting the name from configure method.