small fixes for ping to properly set state in case of failure (dotnet/corefx#33621)
* unix ping fixes
* feedback from review and fixes for failing tests
* feedback from review
* more rework on cleanup logic
* add missing check for disposed object in Async path
* remove freebsd part of this change to make it cleaner
* await for all calls of SendPingAsyncCore()
* make arg checking synchronous and stabilize SendPingAsync_InvalidArgs failing on some platforms
* feedback from review
Commit migrated from https://github.com/dotnet/corefx/commit/
2696d751a7b50bdc3e03bf5089f67aa0bd081b24