Alias from switchOnNext to switchLatest to match RxJS

- keeping onNext to be locally consistent with doOnNext
doOnNext, doOnCompleted, doOnError, doOnEach
Fix TakeLast after removing SingleAssignmentSubscription

- SingleAssignmentSubscription was removed in one merge, TakeLast modified in another merge.
Update Tests for doOn* Changes
MergeMap, ConcatMap, SwitchMap

- flattening map implementations that better fit mental models and use cases
- keeping flatMap as alias to mergeMap since flatMap is common … (though flatMap still confuses people)
- deprecate mapMany as alias to flatMap and mergeMap
Deprecate manWithIndex

If we leave mapWithIndex then we should have “withIndex” on many other operators. Instead of this, an Observable should just be zipped with an infinite stream of numbers and the zip function provides the index.
This keeps the API surface area smaller and provides the desired behavior on all operators.
Deprecate aggregate in favor of reduce

We have had aggregate from Rx.Net for a while but long ago migrated to reduce as the primary. Time to deprecate it.
Merge pull request #670 from benjchristensen/api-tweaks

API Design Tweaks