Fixes #408

Includes the features mentioned in the comment for #408
The reason for this change, here and in the next few functions, is for handing the case where someone tries passing in parameters that aren't actually Vectors.  The various GetBlarg methods used to process arguments to kOS functions (GetDouble, GetInt, GetVector, etc) are designed to let the user see an exception if the value can't be cast to the expected type.  

Simply using the "as" operator meant that when the value wasn't a vector, the function treats it as a null, leading to very misleading and confusing errors that make no sense to the user.

I made this change because in my testing I often made the error in my scripts of passing a Direction in instead of a Vector, and it took a long time to trace down the error because of this.