Use equal? to compare form_input to rack.input

Using equal? provides consistent results of equality between 1.8, 1.9,
and 2.0 when comparing Tempfile objects.

In 1.8, == will change the position of the Tempfile.
In 1.9+, == compares Tempfiles correctly.

In 1.8, eql? compares Tempfiles correctly
In 1.9+, t.eql?(t) always returns false
Use `sub` as we only need to substitute once.

(Hence the use of `\z`)
Merge pull request #595 from benpickles/use-sub-not-gsub

Use `sub` as we only need to substitute once.
Merge pull request #588 from statianzo/tempfile-form-input

Use equal? to compare form_input to rack.input
Change equality check to stop warnings
Merge pull request #597 from vipulnsward/change_equality_check

Change equality check to stop warnings
Merge pull request #596 from SamSaffron/master

Conditional get is causing exceptions during regular usage
avoid copying entire payload twice just to hash it