Make some improvements to BlobEncoder/BlobDecoder and add serde for ArrayData*
Summary:
Add methods to BlobEncoder and BlobDecoder to handle certain
"nullable" types, like smart pointers which may be null.
Add support for carrying additional arguments across certain container
encoding.
Add support for encoding doubles. We just encode the raw bit pattern,
which is fine because this isn't meant to be a portable encoding.
Add serde support for ArrayData*, not just Array (reimplement Array
encoding in terms of ArrayData*).
Reviewed By: edwinsmith
Differential Revision:
D38256349
fbshipit-source-id:
e6dc92907658d976655371aed459547ac7203366