check  if graphicsDevice._d3dDevice.NativePointer == null

fix for issue #3206.
When WP8 resume an WindowsPhoneGameWindow.Page_OrientationChanged event
might occur too early before the device gets updated. I that case
graphicsDevice._d3dDevice.NativePointer is null and
graphicsDevice._d3dDevice.FeatureLevel fails.

I moved outside the try/catch block to make the code readable and to
handle all possible sources of exceptions.
Do we know why we use ` GetSupportedFeatureLevel()` vs the `FeatureLevel` property here?  Why not always use `GetSupportedFeatureLevel()`?