FIX: ViewableData::obj() would sometimes return an empty object

For instance, this happens when these criteria are met:
  1) No casting has been specified for a method in $casting.
  2) A template accesses the field without any casting
  3) Any casts by the template will now yield an empty object.

After a brief look at the commit history, it can seem like this bug is several years old, unless it is a side-effect of other changes in the code.

== Steps to reproduce ==
Add two methods to be accessed by a template. Make sure you do not define an entry in $casting for them:
	public function Testus() {
		return "Te<x>t1";
	}

	public function Testus2() {
		return "Te<x>t2";
	}

Add this to a template:
	<p>
		First access:<br />
		"$Testus" : "$Testus.XML"<br />
		"$Testus2.XML" : "$Testus2"<br />
	</p>
	<p>
		Second access:<br />
		"$Testus" : "$Testus.XML"<br />
		"$Testus2.XML" : "$Testus2"<br />
	</p>

Open the page in a browser, and you will get:
 First access:
"Tet1" : ""
"Te<x>t2" : "Tet2"

Second access:
"Tet1" : ""
"" : "Tet2"

We see that any cast can yield an empty string.
Unit test for bugfix in ViewableData::obj().
TEST: additional test for ViewableData not wrapping cached strings
Controller::redirect now returns the resulting SS_HTTPResponse, allowing the function to better support chaining
NEW: Allow configuration of initial insertion width for images and media

Moved default insertion dimensions logic from JS to PHP to allow setting through config API
Merge pull request #2145 from tractorcow/3.1-controller-redirect

Controller::redirect now returns the resulting SS_HTTPResponse
FIX Arguments to method calls reseting scope
Merge pull request #2146 from jonom/Configurable-default-width-for-Media

NEW: Allow configuration of initial insertion width for images and media
FIX UploadField: IE10 single click for upload trigger

Fixes https://github.com/silverstripe/silverstripe-cms/issues/644.
See https://github.com/blueimp/jQuery-File-Upload/commit/d45deb15f4934f7a2bce03040c879aca8eaa9c8a
Using extendedCan for can*
Allow Form->forTemplate() URL access (fixes #788)

Need to specifically whitelist URL-accessible actions now.
Used in "Insert Link" form in HtmlEditorField.
Regression from 1edf45fbedd1431f7b0105403b628deda2b61bdc
FIX: ConfigStaticManifest not handling multipart namespaces

Fixes #2126
Merge pull request #2156 from simonwelsh/staticnamesapce

FIX: ConfigStaticManifest not handling multipart namespaces
Merge pull request #2150 from hafriedlander/fix/templatevars-v2

FIX Arguments to method calls reseting scope
Merge pull request #2153 from chillu/pulls/form-fortemplate-access

Allow Form->forTemplate() URL access (fixes #788)
Only redirect on logout if we're not already redirecting
Merge pull request #2162 from simonwelsh/sec-redirect

Only redirect on logout if we're not already redirecting
FIX ConfigManifest caching to not use existing cache from wrong $base
Fix CMSBatchActionHandler::$allowed_actions

Regression from earlier API change to deny actions unless specified
Flag "insert image" behat test as @assets

Required in order to run them remotely, which currently
doesn't support file upload through Selenium