Initial nil as null commit.

This commit removes the nil variable, and passed calls to null. Method
dispatching is changed to check for null on each call.
Fix all remaining specs by accepting null as a receiver

Method defintions will convert a receiver of NIL (the null method table)
into null inside a method body definiton. This happens automatically and
overcomes a javascript "feature" where calling/applying a function to
null would set the `this` value to the global object.
Use null as nil.

Merge remote-tracking branch 'origin/nil_as_null'

Conflicts:
	opal/opal/runtime.js