Make object polymorphic and add method_implementation

method_implementation is a magic type used for calling methods. When
calling a method (or a function), it is sent the "call" message,
which refers to an attribute which resolves to an instance of this
magical type. When you send a message to such an instance, it will call
the actual method. For example, when having a method "foo", and you
call it, this will happen:

    foo()
    # is the same as
    foo.call()
    # which is the same as
    foo.call.call

For this to work, object needs to be polymorphic.

I also added an exception type of which an object is thrown when an
object cannot respond to a message. This throwing is only implemented
for method_implementation, and must yet be implemented for object.