(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
I don't know what standard practice is, but should we also have a singular version of this? i.e. ``protected void useDataset(String dataset)``?