Added Base.getObjFromVal : ScriptVal -> obj option

ScriptError, ScriptWarning, Null, and Comment all return None. May
adjust to do the same with Atom.
Added Base.getValFromObj obj -> ScriptVal
Added ScriptError.UnknownMember => string * System.Type

Will use this when dot notation or a method call leads to a
property/method/etc. that doesn't exist on the specified type.
Added API.getMember => Type -> string -> Reflection.MemberInfo option

Finds a member by name
Added API.argumentsValid => Reflection.MethodInfo -> Type list -> bool

Zips and compares types to see if the provided arguments match the
arguments required by the specified method.

Allows arguments to not directly match the target parameters so long as
p.IsAssignableFrom(a) is true, where p is the type of the parameter and
a is the type of the argument.

Does not handle optional parameters or parameter arrays.
Added Environment.findNextType

Choice<Type, ScriptError> -> ScriptVal -> Choice<Type, ScriptError>
Will be used to fold through a list of ScriptVal
Fixed an issue in parseDotNotation with parsing x.M(a.b)

The lookAhead that checks for commas etc. didn't check for ending
parenthesis, which of course occurs when the last argument supplied to a
method is dot notation.