Instead of having logic in pion/webrtc and pion/sdp move all logic to
pion/ice. Users of pion/ice don't want to import these packages to use
basic pion/ice functionality.
FireFox and Chrome both don't support these keys being NULL.
webrtc-pc says the following. So will be reporting upstream
```
If both candidate.sdpMid and candidate.sdpMLineIndex are null,
then this applies to all media descriptions.
```
Relates to 6d3633e589
On Firefox, the RTCIceCandidate interface appears to just be an
RTCIceCandidateInit in disguise. That is, it does not have properties
for each individual component of the candidate line. It only has
the raw SDP string in the candidate property.
This change falls back to parsing the candidate line if some expected
property is missing when preparing the candidate for the callback
OnICECandidate.
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatehttps://caniuse.com/#feat=mdn-api_rtcicecandidate_priority
This only does parsing, does not generate them.
In the future this option will be exposed via the SettingEngine,
including the ability to opt out of mDNS completely for security/scaling
concerns
Relates to pion/webrtc#699
Users are unable to use the callbacks inside `internal/ice`.
Even though we alias things like OnSelectedCandidatePairChange
are unusable since in the package they use `ice.Candidate` instead of
`ICECandidate`
Moved ice related files to internal/ice. Added ice.go and
ice_go.go files containing aliases to internal/ice. Added
internal/tools/gen/genaliasdocs.go helper script for generating the
documentation for these aliases. Dropped ice
prefix from file names in internal/ice package.