Disposed instances won't return to the pool.
Now that SoundEffect.Duration is set in the constructor, there's no need for PlatformGetDuration(). Removed it from all implementations.
Added ArgumentOutOfRangeExceptions for GetSampleDuration and GetSampleSizeInBytes when the sampleRate is outside of acceptable bounds.