Exceptions, round 10: NoMemoryError::new finally works!

With this commit, it is now possible to access functions of a particular class
by using '::'. If this is done, then the first argument will need to be passed
to the function obtained (since .x() adds the first argument).

Example:
	"abc".htmlencode()
is also
	string::htmlencode("abc")

This could be useful in future situations where one would like to pass a
certain function of a class without requiring an instance of it. Or maybe it
will just be a side-effect of allowing static calls to ::new.

Anyway, this sets things up to allow for creating other errors in the future,
and later raising those errors.
Exceptions, round 11: RangeError -> IndexError, drop NoValueError.

The maybe class would have made NoValueError obsolete anyway. The other
conversion was done because Python has IndexError instead of RangeError for
invalid indexes.
Exceptions: == and != for exceptions work, plus a ::new for new exceptions.

A new exception instance can now be created like this:

DivisionByZeroError::new(message)

This works for all errors that can be caught, aside from Exception since that
is a base class. Additionally, comparison is now supported by instance values.

No raise just yet though...