Added Base.ScriptError.MultipleErrors => ScriptError list

Will be used to return multiple errors from a single function.
Added Base.getTypeFromVal => ScriptVal -> System.Type

Defaults to typeof<System.Void> if the provided ScriptVal doesn't have a
corresponding .NET type.
Changed ScriptError.TypeMismatch => string option * Type * Type

Rather than containing a string of the expected type and a ScriptVal
object, with the new functions that get the type of a ScriptVal back, it
makes more sense for the TypeMismatch error to contain an optional value
name, the expected type, and the actual type.
Update Base.showType for DotNetObject case when obj Is System.Type

Rather than doing x.GetType().FullName which would return "System.Type"
in these cases, just return the type's .FullName property.
Band-aid to fix compile in Evaulation.eval

Since Environment.defineTypedObj hasn't been finished or committed at
all yet, doesn't make sense to leave this code here.
Added Environment.getType => Env->ScriptVal->Choice<Type,ScriptError>

Includes updates to Environment.findNextType, which is now
Env -> Choice<Type,ScriptError> -> ScriptVal -> Choice<Type,ScriptError>

getType returns the type of normal values, finds the variable tied to an
Atom and returns their type, or follows dot notation to find the final
type that will result from an expression.

findNextType now supports method calls with arguments; it finds matching
MethodInfo values off a type by calling API.argumentsValid on each
method in addition to checking the method name.
Rearranged MethodInfo argument validation in Environment.findNextType

Checking the name first should speed up lookups.

Added type annotation on the lambda's argument because the compiler
doesn't seem to understand that it's a MethodInfo object otherwise.
Being passed to API.argumentsValid gave this inferrence previously.