Cleans up slice and normalizes error throwing

1. Removes unnecessary conversions of Array-like objects (arguments) to Arrays using `slice`
2. Utilizes the `throwError` function for more consistent error reporting

Note: This is #853 rebased off master