Fix Become & Unbecome

The current implementation of `Become()` and `Unbecome()` is incorrect. This PR fixes the behavior to the one Akka has.

Calling `Become(receive, discardOld: true)` means that the current receive delegate is replaced by the specified delegate.
Calling `Become(receive, discardOld: false)` means that the current receive delegate is persisted before the specified delegate is put in place. To revert to previously persisted delegates `Unbecome()` may be called.

`discardOld` is an optional parameter which defaults to `true`.