Underlying data may have requirements/expectations/etc. about
the run-time alignment. WritableMemoryBuffer currently uses
a 16 byte alignment, which works for many situations but not all.
Allowing a desired alignment makes it easier to reuse WritableMemoryBuffer
in situations of special alignment, and also removes a problem when
opening files with special alignment constraints. Large files generally
get mmaped, which has ~page alignment, but small files go through
WritableMemoryBuffer which has the much smaller alignment guarantee.
Depends on D137764
Prefer = over () when both are valid - makes it easier to read because it limits the code to only implicit ctors (so, as a reader, I don't worry that the function is returning a raw pointer & this is taking ownership - and want to go check that the raw pointer is really conferring ownership, etc)