Adds type hinting to class methods

Class methods can now be defined with return and/or argument type
hinting. Each method can declare that arguments or return values must
be of one of the following types; null, undefined, string, number,
boolean, object, specific class, array or an array of one of the other
types.

A relevant fatal will be thrown at run time when a method or calling
function does not obey type safety.