MediaFoundation function enhancements

A few improvements to the MediaFoundation APIs, mainly returning values rather than using out parameters. Also a use of an enum instead of an int, and the ability to create a SourceReader from a URL.

n.b. these are effectively breaking changes to the existing MediaFoundation APIs.