Contact Forms: Subject can have replaceable tokens

Contact Form subjects can contain tokens, like {city}, where a form field with
name City (case insensitive) will be searched for, and the value of {city} is
replaced by the sanitized value of that field.
Contact Forms: Add `$all_fields` to subject filter

The `contact_form_subject` filter now receives an additional argument
`$all_fields` which is an array with the fields' label names as keys, and the
fields' values as values.

Refactored the hook for token replacing in the subject to use the passed field
value array instead of fetching the current form.
Contact Forms: Refactor subject token replacement.

`replace_tokens_with_input` replaces token values more neatly by using
`str_ireplace` with all the possible token strings and their corresponding
values.
Contact Forms: Update PHPDoc.
Contact Forms: Extract anonymous functions for bc.

Extracted anonymous functions from `replace_tokens_with_input` as static
methods for PHP backwards compatibility.
Contact Forms: Trim labels before tokenizing them.

When replacing tokens with field values, let's trim the labels of any possible
whitespace before tokenizing them for the replacement.
Contact Forms: Added tests for token replacement.

Tests to check that `replace_tokens_with_input` works as expected, and that
`process_submission` will successfully replace tokens in the subject.
Merge pull request #654 from rase-/add/replace-token-in-subject

Contact Forms: Subject can have replaceable tokens