Fixed a memory management problem.
Fixed a memory management problem.

Keeping with Objective-C convention, methods
written in Nu always return autoreleased objects.
But because Nu doesn't add any state to ObjC
objects, it can't track the source of an object.
In other words, Nu doesn't know the difference
between an object created with init and one
created with a helper that returns an autoreleased
object.  Consequently, all methods called by Nu,
*including init methods*, are expected to return
autoreleased objects.  This is handled by the
bridge and works correctly in all but one case,
which is addressed in this change set.

When an init method is written in Nu and called
from Objective-C, its caller expects a retained
object.  To address this, when a method handler
is constructed by the bridge, if its name begins
with "init" (and is not "initialize"), then the
handler is instructed to retain its return value
before it is returned to its Objective-C caller.
Since methods written in Nu are called directly
when they are called from Nu (without going through
the ObjC runtime), this change only affects calls
to Nu methods made from Objective-C.  It may also
be necessary for methods named "alloc" and /^copy.*/,
but since they are unlikely to be written in Nu,
I leave that for another day.

jqk6/nu,timburks/nu,heiko-henrich/nutor,jsyedidia/nu,jqk6/nu,spotify/nu,alloy/nu,gcbeyond/nu,nulang/nu,gcbeyond/nu,jsyedidia/nu,heiko-henrich/nutor,nulang/nu,jsyedidia/nu,gcbeyond/nu,timburks/nu,jsyedidia/nu,timburks/nu,jsyedidia/nu,hodgeswt/nu,spotify/nu,heiko-henrich/nutor,spotify/nu,gcbeyond/nu,jqk6/nu,nulang/nu,hodgeswt/nu,heiko-henrich/nutor,hodgeswt/nu,alloy/nu,jqk6/nu,spotify/nu,hodgeswt/nu