Avoid checkout to fail because of untracked files
Remove the untracked files after a `reset hard`

I think most people expect this behavior
Use the `reset` method instead of running the git command
Reset after checkout in every cases
Suffix '-dirty' to the revision if there is changes
Avoid checkout failure due to untracked files

- Avoid checkout to fail because of untracked files by forcing the checkout (`--force` switch)
- Remove the untracked files after a `reset hard` as I think most people expect this behavior
- Reset after checkout in every cases for consistency

Merge branch 'avoid-checkout-failure-due-to-untracked-files'
Report when the repository has changed by adding '-dirty' to the revision

Merge branch 'report-dirty-revision'