memory usage optimizations for read and write operations

1. We have defined variables for ```attributeForm->attbyval``` and ```attributeForm->attlen```, so I think if we define a variable for ```attributeForm->attalign``` then the argument list of this function call will look like more consistent.

2. What this function does is ```SerializeAndAppendSingleDatum```, i.e. it does length increments, etc. . I was thinking to make this function a bit simpler we can simplify its responsibilities and move out the "append" part. For example, something like the following:

```C
alignedDatumLength = AlignedDatumLength(columnValues[columnIndex], columnTypeByValue,
										columnTypeLength, columnTypeAlign);
enlargeStringInfo(uncompressedDataBuffer, alignedDatumLength);

SerializeDatum(uncompressedDataBuffer->data + uncompressedDataBuffer->len,
			   columnValues[columnIndex], columnTypeByValue,
			   columnTypeLength, columnTypeAlign);

uncompressedDataBuffer->len += alignedDatumLength;
```

What do you think?