ByteWeight review

1. Don't use copy here? Are you going to modify the memory? Use `view`. I really should remove copy from the interface.

2. You should ignore the errors. If you find yourself that you can ignore the error, then please provide a comment with a formal^W proof that the error can't occur, since you've previously checked all predicates. And the finish this predicate with `assert false` expression, e.g.:
```
| Ok m -> m
| Error err -> eprintf "My assumptions was wrong, we're failing with: %s" (Error.to_string_hum err); assert false
```

`view` function returns `or_error` for a good reason.