Reorganize vector input passed to core MD routines
The core MD routines need to be fast and many are currently being converted to use SIMD intrinsics. This means that the inputs (x, v, f, ?) need to be SIMD aligned, sometimes padded at the end. A peculiar, currently relevant, issue is that we need one element extra for unaligned 4-wide SIMD loads (which is not the same as padded up to a multiple of the SIMD width!), see:
To ensure these requirements, we need ways to check that the input to core MD routines have alignment and paddings. This probably means we can't pass plain rvecs to thing like do_force() or constrain(). I guess the proper way is to define an MD rvec object with its own allocator.