Make custom field text handling work just like model field handling.

The custom text fields didn't have the same behavior that standard model
fields had. Switching text types without setting new text didn't result
in automatic escaping/unescaping logic, and the proper fields weren't
being read consistently everywhere. The fields also didn't respect the
deprecated text_type= property anymore (whereas they did in previous
releases, before the split fields).

We now have logic that mirrors what we do for plain text fields, and
helps normalize the results so that there's always an entry for the text
and an entry for the text type.

Unit tests were updated to check custom fields when setting text types.

Reviewed at https://reviews.reviewboard.org/r/6540/