Enforce internal use of reference types

Fixes a number of potential issues related to tests using a mixture of value and reference types. All tests now operate on reference types, and the value types no longer implement the FingerTree interface.