Ref #2021 and Ref #2174 - change fix for #2021

NOTE: see the comments on 50e9eee2e9dcfc5c14608f5e72adf06592b74f7b to see why this is needed.  Also, see commit message here for in-depth explanation:

The fix for #2021 introduced a cascading effect of other problems because it
changed the way DataObject's core functions db and dbObject worked. Even though
it seems that the fix was in harmony with what those functions were documented
to do, it also seems that many things were relying on the pre-existing API that
they actually implemented which was different from their documentation.

This commit reverts the changes made by the following commits, which were made
to address the isseus mentioned above.  HOWEVER, it does not revert the
additional test cases that were added by those commits since the test cases are
still valid regardless of the underlying code.

 * This reverts commit 964b3f2d48e15348c9ae3891017b8428019a10d3.
 * This reverts commit 50e9eee2e9dcfc5c14608f5e72adf06592b74f7b.

After reverting those changes, this commit introduces one small change to how
DataObject->dbObject works to simply stop making it return casting helpers for
things that are not database fields.  This is fixing the original issue raised
in #2021 while still providing the additional functionality needed that caused
the issue raised in #2174 after the original fix for #2021.