Refactor filters definition in merge commands

- Define filters as empty dictionaries and fill them dynamically
- Use setdefault() and get() across the board to initialize non-existing keys
- Fix corresponding unit tests
Refactor filter parsing logic in filtered pull request commands

- Fully separate filter parsing from filter logging logic
- Create _configure_filters() method and
- Let TravisMerge from FilteredPullRequestCommands
- Move key/value and hash filter parsing to dedicated methods
- Refactor logic to include submodule PRs (using submodule name as filter key)
- Fix submodule filter inclusion/exclusion unit tests
Merge branch 'master' of github.com:openmicroscopy/snoopycrimecop into filter_refactor
Add unit test for _parse_hash() and _parse_key_value() methods
Fix unit test initialization

dict.fromkeys() creates a dictionary with shared references failing the
unit tests.
Use re.match in _parse_hash() and update corresponding unit tests
Use re.match in _parse_key_value() and update corresponding unit tests
Remove multiple re imports and use re.compile()
Merge pull request #143 from sbesson/filter_refactor

Merge commands filter refactor