clean up the implementation in BacktraceCleaner

Rationale: the matches_an_exclusion_pattern, which is a wrapper for a
iterating over @exclusion_patterns searching for a regexp match, allowed
for reduced duplication. I removed it because:

* the call from initialize was dependent on @exclusion_patterns being
  assigned first (brittle)
* changing it to rely on the exclusion_patterns arg instead of
  the @exclusion_patterns ivar eliminated that duplication

Additionally:
* the resulting implementation of exclude? now honors
  single level of abstraction principle
* the assignment to @inclusion_patterns was a combination of
  an if statement and a ternary. This felt a bit lopsided to me
  (obviously subjective). Had to choose between || plus ternary
  and if/elsif/else - chose the former to keep it terse.
* blocks passed to any? and none? read more naturally with the operands
  reversed (i.e. regexp =~ str vs str =~ regex)
* 11 lines shorter!
merge BacktraceFilter module into Helpers
untested and should never happen
untested and makes no sense

Behavior was to return a full backtrace if the entire backtrace got
filtered, but this was untested and seems undesirable: if the whole
backtrace gets filtered it's probably because there are custom filters
and the user needs to be able to reason about his/her own filters.
collapse into (effectively) piped iterators

see benchmarks/index_v_take_while.rb
- run with 10 to 100 lists new implimentation is faster
- run with 100000 lists the old impl is faster
- this changes code that filters backtraces for display,
  so range is 0 to number_of_examples (if all fail) - very
  likely on the lower end of the 10 to 100000 spectrum
no need for guard here - idiomatic
align handling of nils and reorder params to align with ordering dependency
restore BacktraceFormatter module