Change sha1 mutation hash to use a separator between strings

* When concatenating strings together to hash you need to use a
  separator that does not exist in the strings, otherwise you can
  easily get duplicate hashes, eg:

    Digest::SHA1.hexdigest('ab' + 'c')  # => "a9993e364706816aba3e25717850c26c9cd0d89d"
    Digest::SHA1.hexdigest('a' + 'bc')  # => "a9993e364706816aba3e25717850c26c9cd0d89d"

  Using a null character as a separator works around this problem:

    Digest::SHA1.hexdigest('a' + 0.chr + 'bc')  # => "0b2749668f0ea8df8a630da13f0d218709efd5ca"
    Digest::SHA1.hexdigest('ab' + 0.chr + 'c')  # => "dbdd4f85d8a56500aa5c9c8a0d456f96280c92e5"
Fix YARD docs to have 100% coverage again
Fix code to no longer reference a non-existant method in subject
Fix code to use proper method
Fix cli matchers to only include actual matcher objects
Fix code to no longer reference non-existent methods

* This code is not final, but I could not figure out a clean way to
  reference the error and output stream from this method.
Rename reek configuration
Upgrade gem dependencies
Remove config file no longer used by devtools
Update reek config to use devtools defaults as base
Update flay and flog thresholds
Add require stringio temporarily to rspec killer