Change Receive to work like Akka

The following changes are made:
Change Receive to bool Receive(object message) to mimic Akka's Receive which is a PartialFunction[Any, Unit]
In Akka this is the pseudo code for handling a message
if(receive.isDefinedAt(message))
  receive.apply(message)
else
  unhandled(message)

This commits implements it like:
if(!receive(message))
  unhandled(message)

Change ActorBase to behave like Akka
- OnReceive is pushed down to UntypedActor
- Introduce abstract bool Receive(object message)
- Introduce bool AroundReceive(Receive receive, object message)

Introduce IUntypedActorContext (corresponding to Akka's UntypedActorContext trait) and let ActorCell implement it.

UntypedActor's Receive() delegates to the new OnReceive() (just like Akka) and reimplements the Context property to return IUntypedActorContext.

Existing actors in Akka.Remote (ReliableDeliverySupervisor, TransportSupervisor, ActorTransportAdapterManager) and Akka.FSharp.FunActor now inherits UntypedActor instead of ActorBase. Someone with more knowledge of the code, should go through these and change to ActorBase (for guidance, see what was changed in FSMBase).

Change inheritors of ActorBase to override Receive instead of OnReceive.

When receiving DeathWatchNotification, only send Terminated to Self for watched actors
Merge branch 'HCanber-receive-like-akka' into dev

Change Receive to work like Akka

The following changes are made:
Change Receive to bool Receive(object message) to mimic Akka's Receive which is a PartialFunction[Any, Unit]
In Akka this is the pseudo code for handling a message
if(receive.isDefinedAt(message))
  receive.apply(message)
else
  unhandled(message)

This commits implements it like:
if(!receive(message))
  unhandled(message)

Change ActorBase to behave like Akka
- OnReceive is pushed down to UntypedActor
- Introduce abstract bool Receive(object message)
- Introduce bool AroundReceive(Receive receive, object message)

Introduce IUntypedActorContext (corresponding to Akka's UntypedActorContext trait) and let ActorCell implement it.

UntypedActor's Receive() delegates to the new OnReceive() (just like Akka) and reimplements the Context property to return IUntypedActorContext.

Existing actors in Akka.Remote (ReliableDeliverySupervisor, TransportSupervisor, ActorTransportAdapterManager) and Akka.FSharp.FunActor now inherits UntypedActor instead of ActorBase. Someone with more knowledge of the code, should go through these and change to ActorBase (for guidance, see what was changed in FSMBase).

Change inheritors of ActorBase to override Receive instead of OnReceive.

When receiving DeathWatchNotification, only send Terminated to Self for watched actors