Move a lot of the edit_field_html() attribute into a helper method in each field type class

Had to switch from a static method because PHP < 5.3 doesn’t support
late static bindings, which was needed to ensure we can pass the
correct class name to WordPress actions/filters.