Soft deprecate size/1

Closes #2356
Provide Protocol.derive/3
Migrate from size to byte_size and tuple_size