(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
in trigger shutdown, serviceWorker cannot be null as it won't get called if start fails (that's how AbstractExecutionThreadService works).