Mailbox race condition fix 375
Merge pull request #446 from rogeralsing/mailbox-rc-fix-375

Mailbox race condition fix 375
Move Stash.cs to Stash\Stash.cs
Move types in Stash.cs to separate files
Remove IStashSupport as it's not really needed
Move stash.cs to Internal
Simplify AbstractStash and add IStash.ClearStash()

Originally AbstractStash was internal so this is really no breaking change.
Move BoundedStashImpl & UnboundedStashImpl to internal namespace
Move BoundedStashImpl & UnboundedStashImpl to Internal folder
When unstashing, Terminated messages must be handled specially.
Let ActorCell create a Stash for IActorStash actors.

- Add Stash property to IActorStash
- ActorCell creates a new stash if actor implements IActorStash and hasn't set Stash itself
- ActorCell, after it has called actor.AroundPostStop & after AroundPreRestart it unstashes all messages. If the user wants another behavior the stash should be cleared in PostStop/PreRestart either by calling ClearStash or by calling UnstashAll.
- Marked UntypedActorWithBoundedStash & UntypedActorWithUnboundedStash as obsolete
- Breaking change: The property CurrentStash in WithUnboundedStash has been removed since IActorStash.Stash was introduced. Cannot find a way to make this non-breakable, but the impact should be low. Most likely, if anyone has used it, they inherited UntypedActorWithXXXStash and it still contains CurrentStash
Add overloads for filtering DeadLetters and add DeadLetter.ToString()

- EventFilterFactory.DeadLetter overloads allows a predicate to be specified
- As Eventfilter turns DeadLetters into Warnings, in order for these to be logged better DeadLetter.ToString() must output something useful.
- Fixed bug in how the error message was created. Needed to enumerate all filters. Remnant from when filters wasn't a collection.
Add ActorWithStashSpec
Add BoundedXYZ versions of all UnboundedXYZ

Currently, they are just copies.