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
FIX ConfigManifest caching to not use existing cache from wrong $base
FIX Only and Except rules in Configs not working
FIX changing environment in config.php changes matched yaml rules
Clarify how Only and Except rules combine
Add configuration system tests for Only and Except combinations.
Merge branch 'pr/2173' into 3.1
Merge pull request #2137 from jthomerson/pulls/fix_viewable_data_wrapped_value

FIX: ViewableData wasn't setting values when using default cast