Adding custom valarray. This commit has the GNU valarray copied exactly, except with changes needed to include local headers