Add relative exclude pattern support to Git, SVN, CVS, and Bazaar SCMClients.

Exclude patterns are now interpreted as relative to the current working
directory.

Add `rbtools.utils.diffs:normalize_patterns` which normalizes patterns, which
are interpreted as relative to the current working directory, into patterns
matching only absolute paths.

Simplify logic of `rbtools.utils.diffs:filter_diff` to use
`filename_match_any_patterns` instead of looping through patterns.

The `rbtools.utils.diffs` functions `filename_match_any_patterns`,
`filter_diff`, and `remove_filenames_matching_patterns` now take an extra
parameter: `base_dir`. This argument indicates the directory that the files are
located in. If this argument is not provided, it is interpreted as the current
working directory.

Add `GitClient._get_root_directory` which finds the absolute path of the git
repository.

All SCMClients that support file exclusion normalize their exclude patterns.
This is not done outside of the respective `diff` methods because Perforce
exclude patterns require special treatment for depot file patterns.

The SVN SCMClient no longer prepends `/` to patterns as it no longer matches
the `/` in the `Index:` line as the file path as they are now interpreted as
relative file paths.

Update documentation for `rbt diff` and `rbt post` to indicate that `-X`
specifies relative exclude patterns. Also add a note that Perforce can specify
depot-specific exclude patterns.

Testing Done:
- Unit tests pass.
- Ran `rbt diff -X` in SVN, CVS, Git, and Bazaar repositories with relative
  paths. Files were excluded as expected.

Reviewed at https://reviews.reviewboard.org/r/6383/