ENHANCEMENT: Move GridField buttons out of table (fixes 7213)

* Added a separate component to grid field to hold buttons.
* Updated templates for changes
* Updated comments
ENHANCEMENT: Make GridFieldButtonRow more adaptable

* Add ability to choose where to put buttons (in buttonRow, toolbar
header, etc)
* Adjust styles to take these changes into account
ENHANCEMENT: Make GridFieldAddNewButton Content more specific

* Alter Grid Field "Add New" Button to take the name of the table (i.e.
"Add Member")
* Alter table names in security section to be singular so the button
text makes sense
ENHANCEMENT Re-instate pinging every 5 minutes in the CMS as a measure
to keep sessions alive. Moved Security/ping to admin/security/ping
BUGFIX: Handle consecutive shortcodes.
API CHANGE Static functions Director::redirect(), Director::redirectBack(),
Director::set_status_code(), Director::get_status_code() and
Director::redirected_to() are now deprecated. Use Controller->redirect(),
Controller->redirectBack(), Controller->getResponse()->setStatusCode(),
Controller->getResponse()->getStatusCode() and
Controller->redirectedTo() respectively.
MINOR Replacing deprecated static function calls to Director with
current Controller instance replacements.
API CHANGE Use of the DropdownField $emptyString argument is now
properly deprecated (has been marked as deprecated since 2.3). Please
use setEmptyString() on the DropdownField instance instead.
BUGFIX Versioned's constructor doesn't provide suitable defaults. Previously a bug/feature in singleton, where it would pass null,true as params to strong_create, which would then get passed through as params to Versioned's constructor, meant that the code still executed fine (as  was set to something that wasn't an array, so the null and true were instead taken as args). The fact that the usage of singleton(Versioned) never really used the classes code, purely for value lookup, meant that this never propagated errors. I've now switched singleton() to use the injector for retrieving values, which means these dud values are no longer passed through

CHANGE Given that Config::inst is an implementation of the singleton pattern itself, I've removed the extra call to singleton(). A side effect of this is that it gets around a possibly nasty circular reference with the dependency injector (which relies on the config object); in future, this dependency structure should really be structured from the DI directly.

MINOR Change singleton and strong_create to use dependency injector

BUGFIX: Provide default constructor values for classes (fixes issues when used in 'singleton' scenario during dev/build in particular)

MINOR Clear out injector state when resetting db schema during tests (a follow on from changing singleton() calls to use the injector underneath)
Merge pull request #486 from halkyon/deprecate_dropdownfield_emptystring_arg

Deprecate DropdownField $emptyString argument properly
API CHANGE Add Form->getController() and use this instead of Controller::curr() in FileIFrameField
API CHANGE Add Form->getName() and deprecate Form->Name(), use getName() instead.
MINOR Don't use template method Actions internally in Form
Merge pull request #485 from halkyon/deprecate_director_statics_for_controller

Deprecate director controller static functions
Merge pull request #483 from halkyon/cms_ping_keepalive

Re-instate CMS ping to ensure sessions are kept alive
Merge pull request #487 from nyeholt/injector_bugfixes

Change singleton and strong_create to use dependency injector, with additional fixes to existing classes to behave correctly
BUGFIX Fixing regression in Boolean::scaffoldSearchField()
MINOR Fixing "No current controller available" error when TestSession::__destruct() is called
FEATURE: Allow adding media to the CMS using oEmbed
BUGFIX: return a meaningful translatable string when resource is invalid
BUGFIX: add comments, make the code more readable