Add MediaType::Duplicate

This creates a AM_MEDIA_TYPE * that is a duplicate of the media type.
Fix bug with CaptureEnumMediaTypes::Next

IEnumMediaTypes::Next expects a new pointer to be created and assigned
to the array.  It does not provide valid pointer values, so don't try to
copy to the pointer values it returns, instead just assign it a brand
new pointer.
Fix callback check in HDevice::Receive

HDevice::Receive is currently failing if there's no valid audio
callback.  The HDevice::Receive function is not just for audio; if it
receives audio, only then should it check for an audio callback.  If it
receives video, it should then check for a valid video callback.