Coerce `:files` to Array in `uninstall`

before invoking `each` method.  This is necessitated by Homebrew's
switch to Ruby 2.0.

Also standardize how all `uninstall` directives are coerced to Array,
in a way that is compatible between Ruby 1.8 and 2.0.

Fixes #4784.
More robust `:signal` directive in DSL

Coerce more variations into pairs.
`uninstall` `:files` in chunks

micro-optimization; minimize shell invocations
improve `:signal` debug message
allow multiple `uninstall` stanzas to work

fixes longstanding bug; aligns code with docs
Merge pull request #4804 from rolandwalker/uninstall_coerce_ruby_2.0

fix uninstall for ruby 2.0, multiple uninstall stanza, more