make flag parsing testable

* return exit codes from parseFlags instead of fatal exit,
  and do the fatal exit in main.main()

* validate constraints via extra function and put constraints into extra
  error type in order to test it later

* add basic tests for parameter constraint checking
implement option remapping

In order to correctly report strange to monitoring systems,
allow remapping of observed exit codes to other monitoring status than
specified by nagios plugin exit code standard.
Use visitor pattern with closure to avoid dups

In order to avoid duplicate monitoringCodes map,
use a closure with visitor pattern to iterate over the map.
Document new parameters in man page.