Added checker for paths which works on both Windows and Linux

This PR includes a checker that fixes path problems like OS-specific separators, case-sensitive files and symlinks.
This is added mostly for compatibility with both windows and linux.
You don't need to use reflect here.. you can just use %T to print out the type:

```go
fmt.Sprintf("obtained value is not a string and has no .String(), %T:%#v", params[0], params[0])
```