Ensure no spaceleaks during MemoBytes decoding
Upon decoding of a type it is quite possible to have a much larger lazy `ByteString` that is being supplied to the decoder, eg. decodign Tx in a Block. In order to ensure that that lazy buffer is not retained in memory we need to make a full copy of the slice, but only during decoding, not during construction, cause otherwise every lens update would incur significant overhead due to redundant serialization