Partial sum implementation

It's madness, but I think you need to take `result` by `&&` here. The trouble is, if you call `partial_sum` with a native array as the second parameter, the call is ambiguous. The array can decay to a pointer, which is a valid OutputIterator. But it is also a valid OutputIterable, so the overload below matches too. By taking `result` by `&&` here, we prevent the decay, so the array type is correctly deduced, and the overload is excluded (because an array isn't an OutputIterator).