FIX: GridField button styling

Remove all top/bottom margins from buttons and apply to GridFieldButtonRow component. Ensure that all buttons are added to a suitable GridFieldButtonRow in ModelAdmin, SecurityAdmin and Group.
BUG Fieldgroup styling
Preempt fatal errors when making some function calls on an empty ArrayList

The function "first" on ArrayList uses the PHP function "reset", which
returns false if there aren't any elements in the array. Two functions
inside ArrayList use this function, "canFilterBy" and "byID". I've
changed these functions to catch the possibility of a false return from
first().
FIX: Remove limit on GridField export

Allow DataList::limit() to take a null value to remove the limit.

Added tests for limit(). Note the one failure, currently the ORM doesn't support unlimited values with an offset.
Fieldgroup Warped $title in a if
Render broken link in HtmlEditorField

Regression: 2.4 had this in the default cms/css/editor.css,
which got moved to the simple theme at some point,
where this styling was removed.
Added gridField->getName() to field names to avoid duplication
BUG Apply HTML5 required attributes when fields are required.
BUG MemberLoginForm fields should be tagged as required.
No <label for> on OptionsetField/CheckboxSetField holder

It produces invalid HTML since the "for" attribute doesn't
map to any HTML input field. Each individual checkbox or radio button
input element has its own <label for>
BUG: Updating old reference of sapphire to framework
Merge pull request #2324 from silverstripe-rebelalliance/sapphireChange

Updating old reference of sapphire to framework
Merge pull request #2323 from chillu/pulls/optionset-label-for

No <label for> on OptionsetField/CheckboxSetField holder
UTF8 defaults for MySQLDatabase->createDatabase()

Doesn't have much effect in practice, because charset and collation
are already hardcoded on an ALTER TABLE level (field definitions),
which take priority. Since most MySQL installs will still default
to a latin1 encoding, this propagates to the table though,
confusing devs and in some cases causing wrong data.

Example: A MSSQL->MySQL DB migration tool used the table metadata
to determine the charset, creating encoding issues.

In terms of hardcoding, we don't really support anything other than UTF8,
and the field-level settings are already hardcoded.

We should probably remove the field-specific settings and rely
on the DB defaults, but that's a sensitive API change
(need to set on existing DBs during upgrade).
Merge pull request #2275 from ARNHOE/3.1-updatefieldgroupstyle

BUG Fieldgroup styling
BUG Added _config as valid module folder in TextCollector
Merge pull request #2327 from ARNHOE/3.1-textcollectorupdate2

BUG Added _config as valid module folder in TextCollector
Merge pull request #2326 from chillu/pulls/mysql-create-db-utf8

UTF8 defaults for MySQLDatabase->createDatabase()
Merge pull request #2318 from micmania1/2317-gridfieldfilterheader-duplicate-fields

Added gridField->getName() to field names to avoid duplication
Merge remote-tracking branch 'origin/3.1.0' into 3.1