Make data be a setter only and use _data internally

@kenips Please look at this PR. It moves the internal representation of data away from the binding so that passed-in data won't be mutated.