Simplify interfaces

Eliminated duplicated returns of the type ("Clean up func sigs")
func foo(dst []float64, ...) []float64 { ... }
where the returned slice was also dst.  This makes the fact that those functions operate via side effect more explicit, and will prevent callers from redundantly assigning the result to a new slice.

I also cleared up a few edge cases in the code where zero length slices were provided to the functions.

The docs were cleaned up and variable names were made more uniform.

Testing has 100% coverage at this time.

What do you think of the changes?
While we're in this edit, we should remove the variadic slice. Nothing else in this package does it. Also, if you don't mind, having an AddTo to compliment the other functions would be nice (it wasn't necessary with the variadic nature, but given that's going away). If you do mind, we can add it in a future PR