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

#853 rebased off master