Move Copy/CopyFile from DB to Tx and make sure it copies exactly Tx.Size() bytes

This is an API change that exposes the read transaction used to copy to database. This means the copying should now be done within a db.View scope.
```
db.View(func(tx *Tx) error { return tx.Copy(writer) })
```

First commit is just the bare move, the meat of the (small) change is in the second commit.

@benbjohnson 
/cc @snormore @charlescng