Fixes two problems with how mailboxes are created

- If no mailbox has been specified, and stashing IS requested by the actor then a mailbox that supports bounded/unbounded stashing should be created.
- If no mailbox has been specified, and stashing is NOT requested by the actor, then the default mailbox as specified in the config should be used. The default mailbox in default config should be UnboundedMailbox.

This is what has changed
- In Mailboxes.GetMailboxType fallback to the default mailbox as defined in config, instead of "" (which defaults to UnboundedMailbox).
- Allow Props.Mailbox to return an empty string
- Default mailbox in pigeon.conf should be UnboundedMailbox and not ConcurrentQueueMailbox. Since UnboundedMailbox inherits ConcurrentQueueMailbox this will not have any effect on existing code.
Merge pull request #434 from HCanber/mailbox-stashing-fixes

Fixes two problems with how mailboxes are created
Update CONTRIBUTING.md
Add tests for Router.AddRoutee
Add Router.RemoveRoutee & implicit casting ActorRef -> ActorRefRoutee

Simplify AddRoutee, that has the same logic copy-pasted.

Breaking change: Router.Send should not be public. This can never have been meant to be public and I can't see why anyone would actually use it from the outside. The public send-to-routees is Route(). The impact of this breaking change should be slim to nothing.
Clearer tests
Make InternalRef protected as it was accidentally made public.
Issues 292 & 403 : loggers moved to Akka.Logger.* . ensured NLogLogger has a public constructor
Merge pull request #443 from HCanber/testactorref

Make InternalRef protected as it was accidentally made public.
Merge pull request #440 from mmisztal1980/i403_292

Loggers moved to Akka.Logger.* namespace
NLogLogger has a public constructor
Merge pull request #441 from HCanber/router-439

Adds Router.RemoveRouter
Add TestKit.CreateTestLatch
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
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