Replace the unclear MakeDecider with clearer versions

Akka JVM has SupervisorStrategy.makeDecider functions which have been ported to our code.

In our case only one overload has been ported:
    SupervisorStrategy.MakeDecider(exceptions)

When you see the line above in the code it is very unclear, just by looking at the name, what it does.
It returns Restart if the reason to why an actor failed is one of the specified exceptions, and Escalate otherwise.

A more suitable name would probably have been something like
    SupervisorStrategy.MakeRestartDeciderFor(exceptions).

However in our code base it's only used twice, and the usage looks like this:
    SupervisorStrategy.MakeDecider(typeof(Exception))

Which means, always Restart. This commit replaces those calls with the much clearer
    reason => Directive.Restart

If we want to introduce helper functions for making deciders we should not port Akka JVMs way, but introduce our own
UnwatchWatchedActors should check _watching and not _watchedBy

This bug caused DeadLetters to be sent in this case:
A watches B
A terminates, and replaces its mailbox with Deadletters
After a while B terminates, so it sends DeathWatchNotification to A which is forwarded to DeadLetters

This fixes it to work like this:
A watches B
A terminates, Sends Unwatch to B and A replaces its mailbox with Deadletters
B Receives Unwatch and removes A from the list of watchers
After a while B terminates. No message sent to A

Also replaced a call to Any() with using Count instead.
LocalActorRefProvicerSpec + bug fixes. Fixes #59

- Changed behavior of ActorOf so it doesn't copy Props when no Dispatcher or
  Mailbox is given in the Deploy object, or when there is no Deploy in
  configuration. This prevents creating a new instances of Props when it
  would be equivalent to the old.

- In Deploy, force Scope, Dispatcher and Mailbox to be set to NoScopeGiven,
  NoDispatcherGiven and NoMailboxGiven in case of null values to
  constructor, so we can always compare with only the null object.

- Changes to Actor name regex because of differences between CLR and JVM:
  - a-zA-Z0-9 instead of \w (latter includes non-Latin characters)
  - added CultureInvariant option
  - added ^$ because regex to match whole string (Scala does this when
    matching regexes using pattern matching)

- Changed exception type and messages for null/empty Actor names.
PR fixes for issue #59
Added explanation of WhenAll/ContinueWith trick in unit test
Merge pull request #517 from cpx/dev

LocalActorRefProvicerSpec + bug fixes. Fixes #59
Merge pull request #514 from HCanber/fix-UnwatchWatchedActors

UnwatchWatchedActors should check _watching and not _watchedBy
Merge pull request #511 from HCanber/remove-make-decider

Replace the unclear MakeDecider with clearer versions
Increase the timeout for the test that proved that bug #209 is fixed.

The test seems to timeout on appveyor. Hopefully this fixes that problem.
Merge pull request #524 from HCanber/bug209fix-increase-timeout

Increase the timeout for the test that proved that bug #209 is fixed.
Unified spawning functions. Explicit function signatures. F# Formatting. Logging and inboxing functions.
F# API changes: spawning functions, logging, inbox wrappers, F# Formatting
fixed pipeTo function