Started on windows service.
Fix run logic..
Better implementation
More elegant option passing.
Factor code.
Try to minimize diff.
Better wording.
Merge remote-tracking branch 'origin/master' into winsvc

Conflicts:
	src/main.ml
Revert "Try to minimize diff."

This reverts commit 564f65e55b438cb1495f517706c5c74c8527833b.
Merge branch 'winsvc'