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.
FormFields now allow setting of extra CSSClasses en masse

Each CSS class passed in to `addExtraClass` or `removeExtraClass` will be set as their own key in the `extraClasses` array

Also make `Form` consistent with `FormField`
Adding tests to `FormField` and `Form` for extra classes

Added tests that were missing from `Form` and ones for my new logic
Deprecate Aggregate and DataObject::getComponentsQuery
Improve memory performance when generating config static and class caches
Merge pull request #2203 from camspiers/config-memory

Improve memory performance when generating config static and class caches
FIX Empty Datefield with defined min or max has non-object error thrown

When submitting a Datefield with no value but with a min / max config date, the validate() function attempts to access a function on $this->valueObj (which is a non-object)
BUG Remove extraneous </div> breaking IE8 image embedding (os#8218)

Editor was not able to add images to TinyMCE - both newly uploaded and
old ones from the local assets.
Rewritten "extend cms" docs (#1671)

Hopefully this commit can be reverted once we fix the
layout manager to work with all four directions (north, south, east, west).
A "bookmark bar" makes more sense as an example than having the links
in the menu, and it allows us to illustrate the CMS layout techniques.
FIX ConfigManifest regenerating every request if variantKeySpec is an empty array()
Use httpError() instead of non-existent HTTPResponse_Exception class
Merge pull request #2207 from camspiers/config-caching-fix

FIX ConfigManifest regenerating every request if variantKeySpec is an empty array()
Merge branch '3.0' into 3.1
Add some docs about admin-side HTML sanitisation
Merge pull request #2208 from hafriedlander/fix/sanitise

Add some docs about admin-side HTML sanitisation
Adding test to prove issue with HTTP Header parsing in RestfulService

I have a header like:
X-BB-Auth: xxxx

and it is being given back to me as X-Bb-Auth - i want to prove the issue and the fix
FIX RestfulService header parsing now accepts non-title case headers
Merge pull request #2212 from dhensby/patch-3

Adding test to prove issue with HTTP Header parsing in RestfulService
Merge pull request #2202 from tractorcow/3.1-aggregate-deprecation

API Deprecate Aggregate and DataObject::getComponentsQuery
Member.lock_out_delay_mins configurable, password security docs