Print more stats in the PingPong example

Now includes start time-the time to start the system and all actors, and a total time.
Merge pull request #158 from HCanber/pingpong

Print more stats in the PingPong example
Now includes start time=the time to start the system and all actors, and a total time:
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
Add Base64 Encoding helper

This will be used when creating temp actor names
Make Address IEquatable<Address> and add equality operators
Add ActorPath: Root, Parent, == and != operators. Make Elements an IReadOnlyCollection

Making Elements an IReadOnlyCollection makes checking for empty paths so much easier.
Include full exception when logging errors.

Useful information was missing, such as inner exception info.
Props should, when failing to create actors, have better error message
Fix spelling error in RoutingSpec
Rename files in examples
Merge pull request #159 from HCanber/minor-things
FSM test sometimes fails, make it more tolerant

Often the test failed since it only took 495 ms and not 500 ms
Merge pull request #160 from HCanber/fsm-failures

FSM test sometimes fails, make it more tolerant
Sometimes a test failed since it only took 495 ms and not 500 ms.
Add names to actors to simplify debugging (Stocks Example) + example symbols
Merge pull request #161 from HCanber/stock-example

Add names to actors to simplify debugging (Stocks Example) + example sym...
From BroadcastActorRef, remove the inheritance to ActorRef.

BroadcastActorRef isn't really an ActorRef. For example, it does not have path.
Maybe it should be call BroadcastActorCollection or something in line with that.
Make ActorRef.Path {get;} abstract instead of virtual

This is done in order to avoid calling virtual members from constructor
Add Dispatchers.DefaultGlobalDispatcher
Add InvalidMessageException